架构师 0 期 Week10 作业 2
微服务开展的原因:
1、项目编译难:公司业务发展快,代码量成几何级数增加动辄几百G,增改几行代码需要编译整个项目往往耗时半天。
2、项目部署难:
项目大了,依赖错综复杂,一次发布前调试需要几十几百号开发在线待命,随时准备调整自己负责的那几行代码,待发布完成后才能下班,造成严重人力资源浪费。
3、几行代码修改就涉及一个版本更新,不同人提交的代码存在潜在的版本冲突。再一个几十上百人开发的项目中,代码提交频繁,冲突解决起来很费时间。
4、项目中各业务线使用同一数据库集群,随着业务增加逻辑复杂,数据库访问容易成为瓶颈。
5、项目中老代码坑多维护困难,增加新代码的时候容易影响老代码的使用,出现不可预知的bug。
微服务的功能:
1、拆分业务,将模块独立部署,降低系统耦合性。包括纵向拆分,一个大应用拆分成多个小应用和横向拆分,将可复用业务拆分出来独立部署成微服务。
2、失效转移:某服务所在服务器宕机后注册中心将服务转移至新服务器,不影响服务调用。
3、负载均衡:某服务由一个服务集群提供,每个服务器上均衡负载。
4、对应用侵入较少:服务通信和业务逻辑分开,开发业务逻辑时无需考虑部署方式。
5、版本管理方便:每个服务独立维护版本,服务间的依赖可以不同步,服务A可依赖服务B最新版本,也可依赖仍在维护的历史版本。
微服务落地的注意事项:
1、应业务先行,理顺业务边界和依赖关系先拆出独立模块再做分布式服务
2、谨慎将耦合严重、逻辑复杂的系统做成微服务
3、搞清楚实施微服务的目的,业务复用?开发边界清晰?还是做成分布式集群提升稳定性?
评论