愿景

服务化

服务不是新奇的概念,我理解的所谓服务是一组完整功能集合的最小单位,职责单一而内敛。

系统初生之时,业务少人少,所有功能集合在一个服务里,会更简单,更敏捷,易运维,迭代快。随着业务的不断扩展,单个服务本身的职责会变得发散,每次更新都会影响整个系统。业务扩展会带来人员增加,协作成本会直线上升,比如pr的冲突,依赖,merge顺序等;开发速度降低,直观表现是编译时间越来越长,蹲两个坑回来还在编译;迭代周期变长,这么多人对代码的贡献使得每个版本可能都是翻天覆地的变化,上线的成功率越来越低,回退的可能性也会降低。

服务化的结果就是为了解决上述问题,将越来越庞大的单一服务拆分成一个个子服务,让每一个子服务都保持业务起初的简单敏捷、易运维、迭代快的状态。服务化给整个系统带来的好处是,增减服务以实现功能上可定制,增减实例以实现性能上的可伸缩。但是服务化的过程也会带来很多问题,主要集中在两方面:

  • 服务开发难度增大。
    • 模块依赖变成了服务间依赖。
    • 方法调用变成了服务间通信。
    • 事务难以保证。
    • 测试更加困难。
    • 问题更难定位。
    • 调试困难。
  • 对运维的不友好。
    • 越来越多的服务及配置文件,系统运维成本快速增加。
    • 单一服务的运维手段不再适用,服务本身对运维不友好的设计由量到质,变得不可忍受。
    • 不同类型的服务需要不同的运维操作。
    • 部署整个系统的操作复杂,时间变长。
    • 日志分散,查看日志不方便。
    • 监控系统及报警策略需要不断完善。

容器化

TODO

  • 监控
  • 远程日志或日志收集系统。
  • 分布式文件系统

自动化

TODO

  • 集群资源管理系统。
  • 服务编排系统。
  • 服务特性:可调度,可伸缩。

一体化

TODO 使得进化后的系统如系统初生之时一样,简单敏捷易运维迭代快,对外依然像一个单一服务。

组件


未完待续

Copyright © lowzj 2017 all right reserved,powered by GitbookModified: 2019-12-04 12:28

results matching ""

    No results matching ""