点击蓝色“ 乔志勇笔记 ”关注我哟
加个“ 星标 ”,第一时间获取推送的文章哦
一、微服务落地
1、组件合适的技术团队
2、从一个案例入手
3、做好技术取舍
4、采用Devops
5、统一微服务治理平台
1)服务管理 2) 服务治理 3 )服务监控 4)问题定位 5 )日志查询 6) 服务运维
二、容器化docker
docker镜像的分层机制
基础环境层 :操作系统运行的版本、时区、语言、yum源
运行时环境层: 业务代码的运行环境,如jdk版本
web容器层:tomcat容器的jvm参数
业务代码层:实际的业务代码版本
三、容器运维平台
1、镜像仓库(基础设施层)
1)权限控制
2)高可用性
镜像同步 的方式分为主从复制 或p2p
2、资源调度(主机层)
封装ecs api, ansible进行初始化分发
3、容器调度(调度层)
kubernetes
1)主机过滤 2)调度策略
4、服务编排(编排层)
1)服务依赖
docker compose
2)服务发现
基于nginx的服务发现 、 基于注册中心的服务发现
3)自动扩缩容
一旦容量决策支持系统检测到某个服务需要进行扩容,就会创建扩容任务,Config Watcher会监控到扩容任务,并通知CronTrigger有调度策略变更。CronTrigger接到扩容任务,就会调用Scheduler来具体执行扩容。同时还可以通过API来修改、查询扩缩容的信息,也可以通过UI来操作
四、devops
1、实现方案:jekins 或 gitlab (依赖于.gitlab-ci.yml)
2、流程
(1)持续集成,这个步骤的主要作用是确保每一次代码的Merge Request都测试通过,可随时合并到代码的Develop分支,主要包括四个阶段:build阶段(开发分支代码的编译与单元测试)、package阶段(开发分支代码打包成Docker镜像)、deploy阶段(开发分支代码部署到测试环境)、test阶段(开发分支代码集成测试)。
三个关键点:代码检查、单元测试 、 集成测试
(2)持续交付,这个步骤的主要作用是确保所有代码合并Merage Request到Develop分支后,Develop分支的代码能够在生产环境中测试通过,并进行小流量灰度验证,可随时交付到线上。主要包括五个阶段:build阶段(Develop分支的代码编译与单元测试)、package阶段(Develop分支的代码打包成Docker镜像)、deploy阶段(Develop分支的代码部署到测试环境)、test阶段(Develop分支的代码集成测试)、canary阶段(Develop分支的代码的小流量灰度验证)。
三个关键点:线上生产环境摘除部分节点、 导入部分流量、观察服务状态
(3)持续部署,这个步骤的主要作用是合并Develop分支到Master主干,并打包成Docker镜像,可随时发布到线上。主要包括四个阶段:build阶段(Master主干的代码编译与单元测试)、package阶段(Master主干的代码打包成Docker镜像)、clear阶段(Master主干的代码Merge回Develop分支)、production阶段(Master主干的代码发布到线上)
三个关键点:手动发布、部分发布、验证观察
五、容量规划
(1)容量评估
评估集群的最大容量和线上实际运行的负荷
步骤 : 1、选择合适的压测指标
2、压测获取单机的最大容量
3、实时获取集群的运行负荷
(2)调度决策
确定弹性扩容的时机和机器数
方式:1、扩容
2、缩容
六、多机房部署
(1) 负载均衡问题
1、平时遵循就近原则
2、流量调配方式
dns解析(大流量)或 nginx 解析调配(小流量)
(2)数据同步问题
1、主从机房架构
2、独立机房架构
WMB消息同步(MCQ 消息队列或者RPC调用)写请求 ,通过应用层同步从而更新缓存
注:同步一般有三种方式:应用层同步,缓存层同步,存储层同步,复杂度上也是由高到低排列,一般应用的话,存储层同步就够了
(3)数据一致性问题
消息对账机制保证最终一致性
近期文章:
微服务架构————基本组件
微服务实战问题
秒杀系统设计
分布式数据一致性理解
5种分布式锁实现的对比?
Java并发编程学习体系
java8 Stream 史上最全总结
Java 网络编程"初探"
redis 知识点总结
java 核心技术学习总结 (一)
spring中"投机取巧"地限制 用户同时登陆
如果你喜欢本文
请长按二维码,关注 乔志勇笔记