分布式架构与微服务实践:集群、分布式、Nginx、Mysql、Redis、Docker、K8S技术解析

需积分: 11 0 下载量 141 浏览量 更新于2024-12-17 收藏 38.12MB ZIP 举报
资源摘要信息:"《over-server:架构相关:[进度20% ]记录分布式与微服务概念与实践,附Nginx、Mysql、Redis、Docker、K8S等常用服务端技术》" 知识点: 1. 集群与分布式概念辨析 在IT技术架构中,集群(Clustering)和分布式(Distributed Computing)是两个重要的概念,它们都是为了实现系统的高可用性、可伸缩性和高性能。然而,二者在实现方式和目的上有所不同。 - 集群是将多个计算机系统通过网络连接起来,并将其作为单一系统运行的一种系统结构。集群的目的主要是为了提高系统的可用性和伸缩性。在集群中,同一个任务可以被多台机器执行,通过负载均衡技术,可以将任务分发到不同的节点上去执行,从而提高单个任务的执行效率和系统的整体处理能力。集群的关键是节点之间的协作,单个节点的故障不会导致整个系统的不可用,而是通过故障转移机制保证服务的连续性。 - 分布式系统则更强调任务的分散和协同工作。它将一个大的任务拆分成多个小的子任务,分布到不同的节点上进行处理,然后将结果汇总。分布式系统设计的目标是通过分布式的计算资源来解决大规模数据处理和大规模并发访问的问题。与集群不同,分布式系统中的节点可能在不同的地理位置,系统的各个部分在物理上是分布的,而不是单一数据中心。 微服务(Microservices)是另一种架构风格,它将应用程序构建为一套服务的集合,每个服务运行在其独立的进程中,且具有独立的数据库。微服务架构的目标是实现快速、灵活和可扩展的服务开发,支持持续集成和持续部署。微服务之间的通信可以基于不同的技术,如HTTP RESTful API、消息队列等。 2. 分布式系统的优势与挑战 分布式系统的优点在于它能够充分利用网络上分散的资源,处理大规模的数据集,并提供良好的扩展性和容错能力。然而,它也带来了挑战,如节点间的通信开销、数据一致性问题、分布式事务的复杂性等。 3. 常用的服务端技术 - Nginx:Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。在分布式系统中,Nginx常被用作负载均衡器,来分配外部请求到多个应用服务器,提高系统的可用性和扩展性。 - MySQL:MySQL是一个流行的开源关系型数据库管理系统,广泛应用于各种应用程序。在分布式架构中,MySQL可能需要与其他技术配合,如分布式数据库、分库分表策略等,以实现数据的高可用和水平扩展。 - Redis:Redis是一个开源的使用ANSI C语言编写、支持网络、基于内存且支持持久化的高性能键值数据库。在分布式系统中,Redis常用于缓存解决方案,提高读取性能,或作为消息代理使用。 - Docker:Docker是一个开源的应用容器引擎,它允许开发者打包应用以及依赖包到一个可移植的容器中,然后发布到任何支持Docker的平台上。Docker容器化技术简化了分布式应用的部署和运维,是微服务架构实践中的关键技术。 - Kubernetes(K8s):Kubernetes是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。Kubernetes支持自动化的工作负载的容器化部署,提高了应用程序的部署效率和管理效率,是微服务架构下管理复杂部署的首选工具。 在阅读了《over-server:架构相关:[进度20% ]记录分布式与微服务概念与实践,附Nginx、Mysql、Redis、Docker、K8S等常用服务端技术》之后,读者将对这些概念有更深入的理解,能够更加合理地在实际项目中运用集群、分布式以及微服务架构,并熟练掌握Nginx、MySQL、Redis、Docker和Kubernetes等服务端技术来构建和维护现代IT系统。

我想将frontend 也是用volumes,将其映射到/app/frontend目录,在/app/frontend下install以及build,如何实现 docker-compose.yml文件: version: '3' services: frontend: build: context: ./frontend dockerfile: Dockerfile ports: - 8010:80 restart: always backend: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: python manage.py runserver 0.0.0.0:8000 ports: - 8011:8000 restart: always celery-worker: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server worker -l info --pool=solo --concurrency=1 depends_on: - redis - backend restart: always celery-beat: build: context: ./backend dockerfile: Dockerfile volumes: - /app/backend:/app environment: - CELERY_BROKER_URL=redis://redis:6379/0 command: celery -A server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler depends_on: - redis - backend restart: always redis: image: redis:latest ports: - 6379:6379 restart: always mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=sacfxSql258147@ ports: - 8016:3306 volumes: - ./mysql:/var/lib/mysql restart: always frontend:dockerfile文件 FROM node:16.18.1 WORKDIR /app/frontend COPY package*.json ./ RUN npm install COPY . . RUN npm run build:prod FROM nginx:latest COPY --from=0 /app/frontend/dist/ /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

2023-07-14 上传