微服务生态系统
第一层:微服务硬件生态系统
- 物理服务器(公司自有的或者从云供应商租的)
- 数据库(专用的或者共享的)
- 操作系统
- 资源的隔离和抽取
- 配置管理
- 主机级的监控
- 主机级的日志
第二层:微服务通信生态系统
- 网络
- DNS
- 远程过程调用
- 端点
- 消息
- 服务发现
- 服务注册
- 负载均
第三层:应用平台
- 自服务内部的开发工具
- 开发环境
- 测试,打包,构建,发布工具
- 部署流程
- 微服务级的日志
- 微服务级的监控
第四层:微服务
- 微服务
- 所有的微服务配置
微服务的挑战
一、可用性
- 99.999%的时间可用
二、稳定性
- 稳定的开发周期
- 稳定的部署过程
- 稳定的引入和退出过程
三、可靠性
- 可靠的部署过程
- 计划,缓和,抵抗依赖的错误
- 可靠的路由和发现
四、可伸缩性
- 定义良好的数量和数量增长机制
- 确定资源的瓶颈和需求
- 准确的容量计划
- 稳定的通信控制
- 依赖的伸缩
- 数据存储的伸缩
五、容错和预灾
- 识别并预防潜在的灾难和错误场景
- 识别并解决单端点的错误
- 错误检测和现场修复机制
- 用代码测试,加载测试以及噪音测试来测试恢复弹性
- 管好通信以防错误的出现
- 错误和输出要合适地处理
六、性能
- 针对可用性要有合适的服务级的协议(SLAs - service level agreements)
- 合理处理任务
- 高效利用资源
七、监控
- 合适的日志和堆栈跟踪输出
- 定义良好的报表-能够很容易地理解并能准确地反映服务的健康状况
- 配套高效,可用的运行手册
- 实现并维护一个及时响应的轮子
八、文档
- 一个全面,最新,中心化的文档应该包括无服务所有最关键的信息
- 而且要使开发人员,各组以及生态系统级都能全面理解
参考文献:
Production-ready Microservices. Susan J. Fowler.