Skip to content
字数
1285 字
阅读时间
6 分钟

什么是微服务

微服务是一种分布式系统解决方案,推动细粒度服务的使用,这些服务协同工作,且每个服务都有自己的生命周期。-- 《微服务设计》

微服务是松耦合的分布式软件服务,这些服务执行少量的定义明确的任务。-- 《Spring微服务实战》

微服务不是一个新理念,只是一个新名词。本次梳理聚焦于理念和思想,实现细节变化的速度总是比它们背后的理念要快得多。

没有银弹,选择了微服务,你需要面对所有分布式系统需要面对的复杂性。

图片

特点

  • 小的
  • 自治

小型的、简单的和解耦的服务 = 可伸缩的、有弹性的和灵活的应用程序 服务越小,微服务架构的优点和缺点也就越明显。对于一个服务来说,应该考虑什么应该暴露,什么应该隐藏。

原则

  • 围绕业务概念建模
  • 接受自动化文化
  • 隐藏内部实现细节
  • 让一切都去中心化
  • 可独立部署
  • 隔离失败
  • 高度可观察

12要素

  • 一份基准代码,多份部署
  • 显式声明依赖关系
  • 在环境中存储配置
  • 把后端服务当作附加资源
  • 严格分离构建、发布和运行
  • 以一个或多个无状态的进程运行应用
  • 通过端口绑定提供服务
  • 通过进程模型进行扩展
  • 快速启动和优雅终止可最大化健壮性
  • 开发环境与线上环境等价
  • 把日志当作事件流
  • 后台管理任务当作一次性进程运行

12factor官方页面:https://12factor.net/

如何建模(系统设计)

  • 技术愿景
  • 同理心、合作
  • 界限上下文
  • 共享的隐藏模型

分解

  • 关键是界限
  • 改变的速度
  • 找到问题的关键
  • 理解根本原因

任何能够简化工作的措施都值得尝试!

规模化

  • 分布式计算的故障
  • 故障无处不在(软件可能崩溃,硬盘终究会坏,故障一定会发生)
  • 反脆弱的组织(事物实际上受益于失败和混乱)
  • 分散风险(反亲和,BZ计划)
  • 拥抱故障(试图阻止,快速恢复)
  • 超时、断路器、舱壁、隔离
  • 别忘了人

图片

工程建设

  • 安全
  • 集成
  • 测试
  • 部署(发布)
  • 交付
  • 监控
  • 拨测

人们常说,你不应该实现自己的加密算法库。那么,你是否应该实现自己的分布式协调系统?

微服务的最佳载体:容器。

反模式

  • 从单体开始,不要一开始就微服务
  • 做到平均三到五人(小型开发团队)一个微服务
  • 领域边界,杂乱的依赖
  • 微服务快吗?
  • 系统本身不支持快速变化
  • “上帝”服务,哑服务

图片

康威定律

微服务架构可以很好的将架构与组织结构相匹配,比年出现过大的代码库,从而获得理想的团队大小及生产力。

从一个合适的点开始,架构师(类比测试左移,架构左移到开发,即全栈)承担了驱动系统演化的职责。

一些文章

贡献者

文件历史

撰写