微服务| 青训营笔记

50 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天

系统架构演变历史

为什么架构需要演变? 因为互联网爆发性发展,硬件设施快速发展,开发人员极具增加,计算机理论和技术的发展

构架从单体,到垂直,到分布式,到SOA最后到微服务演变的

  • 单体架构,性能最高,冗余小,但模块相互影响,debug困难
  • 垂直架构,按照业务垂直划分,业务独立开发,但不同业务存在冗余
  • 分布式架构,抽出业务无关的公共模块,业务无相关独立服务,但服务模块出bug可能导致全站瘫痪,关系调用复杂,不同服务冗余
  • SOA架构,面对服务注册,整个系统射击是中心化,需要从上至下设计,重构困难
  • 微服务架构, 彻底的服务化,开发效率质的提升,业务独立设计,自下而上,故障隔离,但安全性有所问题

微服务架构核心要素
服务治理

  • 服务注册,发现,均衡负载,扩缩容
    可观测性
  • 日志采集,分析,监控大盘,大点,异常报警
    安全
  • 身份验证,认证授权,访问令牌,审计,传输加密

微服务构架原理和特征

服务(service) 是一组具有相同逻辑的运行实体
实例(instance) 一个服务中,每一个运行实体是一个实例
实例和进程的关系 实例和进程没有必然对应关系

集群 服务内部逻辑划分,通常一个服务包一个集群,一个集群包诺干个实例

服务发布

服务发布是让服务升级运行新的代码的过程
服务发布的难点

  1. 服务不可用, 通常发生在服务准备升级时候
  2. 服务抖动,一个在升级,另一个仍然运行久的代码
  3. 服务回滚,新的代码有错误,需要回滚

那么怎么解决呢? 很简单, 蓝绿部署, 运行两个集群,一个升级的时候,用另一个集群处理服务, 简单稳定,不过需要两倍资源

金丝雀发布,就是新上一个新代码的实例,然后下线一个旧代码的实例,让旧代码升级, 升级完成后重复此操作,最后下线额外的实例即可.