微服务遵循前提:数据库
- 业务独立性:推荐书籍 Eric Evans《领域驱动模型》
- 团队自主性:
特色
- 单一职责:推荐书籍 Robert C.Martin《敏捷软件开发:原则、模式和实现》
- 轻量级通讯:语言无关、平台无关的交互方式

- 独立性:交付过程当中,开发(功能)、测试、部署的独立性;服务与服务的独立、隔离;




背景

互联网时代的产品特色:网络
价值观、方法论=》可遵循、可参考、可实施的交付体系架构
- 精益创业Lean Startup=》最小可实行产品Minimum Viable Product
- 敏捷方法
- 持续交付
- 云、虚拟化、基础设施自动化Infrastructure as Code:
- DevOps文化的推行
容器虚拟化技术
Docker的优点 》一个节点运行成百上千的Docker容器 》解决微服务的环境搭建、部署、运维成本高的问题运维
- 更快速的交付、部署:镜像
- 更轻松的迁移、扩展:能够在任意平台迁移(物理机、虚拟机、公有云、私有云……)
- 更简单的管理:镜像修改以增量方式分发、更新
SOA面向服务架构 vs 微服务




微服务的本质:
- 服务做为组件Component:组件能够被独立部署
- 定义了清晰的、语言无关、平台无关的接口
- 分布式调用比进程调用更消耗时间
- 严重依赖网络的可靠性、稳定性






- 业务数据独立
- 业务数据接口继承,而非以数据库的方式同其余服务继承
- 随业务发张,选择更合适的工具管理、迁移业务数据

- 基础设施自动化
- 部署、运维的成本随服务的增多呈指数级增加
- 云技术、持续继承、持续交付
- 演进式架构
微服务的优点
实施须要考虑的因素:异步
- 分布式系统的复杂度
- 分布式系统的复杂度
- 性能:网络延迟、带宽;多服务相互协做时,响应时间、性能
- 可靠性:网络、带宽、节点自身的可靠性=》组件间远程调用;单点故障
- 异步:异步通讯的定位问题、调试问题难度更大
- 数据一致性:跨多个节点来保证数据的瞬时一致性||数据的最终一致性
- 工具:开发、调试工具没有足够支持
运维成本:每一个服务独立配置、部署、监控、日志收集=》成本呈指数级增加
- 部署自动化:构建自动化部署流水线
- DevOps与组织架构
- 服务间依赖测试
- 服务间依赖管理