微服务拆分原则

在微服务拆分中,核心需求在于拆开的微服务之间的联系越少越好,数据交互也是越少越好。因为微服务之间的数据一致性非常难处理,如果一致性方面的问题很少,整体做起来就比较简单了。

微服务架构选型

微服务架构的选型也是一个让人比较纠结的事。选择开源技术时,社区的活跃度是非常重要的参考。

第二个选型原则:一定要满足需求,这是要重点考虑的。

第三点原则是掌控能力,假设一个框架是用 C 语言写的,整个团队没有懂 C 语言的人,这样肯定不行。

因此,微服务架构选型需要考虑:社区活跃度、需求满足度、掌控能力这三方面。

微服务架构演进方式

再来说说微服务架构的演进。微服务是长出来的,而不是设计出来的。完全架空地去做一套新系统当然可以做好微服务架构,但很多时候我们没有这种条件,都是在一个已有的系统里去做。

因此,架构演进方式就是:有了新需求,做一个独立的微服务,慢慢做成服务化互相调用,然后把数据切分过来。

但数据切分也不是一次就做完了,而是数据先在存在于新老系统中,两边保持一致,逐渐再迁移至新系统。

最后的结果可能是老系统中还有残留,但是在它周边的很多新需求,全都是通过一个个独立微服务做出来的,这就是微服务长出来的方式。

在项目落地中,这种架构演进方式还是有很多风险的,也经常有客户采用完全中心开发的方式做微服务,比较简单纯粹,但需要多花很多成本。

微服务是需要大平台支撑的

微服务革新了软件的生产过程,包括开发、测试和部署各个阶段。但服务的切分并不是要遵守单一原则,因为未来的服务不可能完全垂直切分。

从另一个角度看,微服务的过程其实也是工业化的工程,每个微服务都是生产线上的一个零件,但要注意,零件的组装和拼接难度更大,所以在谈论微服务时一定要注意,它需要一个大平台支撑。

比如有自己的企业级 PaaS 整体解决方案,整个 PaaS 平台底层是容器平台,它是 PaaS 中的一个基础设施,再上一层有应用的开发管理,应用的部署上线,以及应用的运行管理和开发管理。

微服务的开发框架就跟开发管理相关。微服务咨询,这属于解决方案的一部分,包括了微服务拆分设计的咨询,以及微服务框架选型和微服务的开发指导,这两者属于开发过程管理。

对于微服务的发布上线和微服务运行的管理,还有服务治理,监控和服务治理是云平台管理的重要方面。微服务上线是容器平台的事情,微服务运行管理就涉及到服务治理。

除了上述四个方面之外,企业提升微服务落地的能力,最重要的是整个团队要达成共识。现在开发团队经常会听到两种声音,一是希望借助新技术,发展新东西,二是希望按部就班,不做改变。前者和微服务是比较匹配的,后者对微服务是一种阻力。

所以首先需要团队达成共识,如果第一个微服务试点项目失败,可能之后很长一段时间内都没有机会落地微服务了。其次,团队要做好心理准备与知识储备,因为微服务对开发、测试人员都带来了挑战,如果没有准备好,可能就需要花更多时间。

总之,微服务之路的想法是好的,但是在追赶微服务浪潮之前,企业和团队应该负责任地考虑,做好权衡取舍,切忌盲目跟风。

微服务架构首先要关注的不是概念与技术框架,而是服务的边界、职责划分,划分错误就会陷入大量服务间的相互调用和分布式事务中,这种微服务实践带来的不是便利而是麻烦。

微服务拆分,选型与演进相关推荐

  1. spring cloud eureka 服务之间调用_Spring-cloud微服务实战【一】:微服务的概念与演进过程...

    本文是一个系列文章,主要讲述使用spring-cloud进行微服务开发的实战.在开始之前,我们先说一下从传统的单一部署架构到微服务的发展过程,以便让童鞋们更好的理解微服务的概念与演进过程. 1.单体架 ...

  2. 微服务拆分策略和原则

    目录 微服务拆分目的 单体应用拆分成微服务的时机 拆分时指导原则 拆分的粒度把控 微服务拆分策略 微服务合并 拆分过程中要注意事项 注意:本文参考  微服务拆分策略和原则 - 简书 微服务拆分目的 不 ...

  3. 宜信微服务架构落地及其演进|分享实录

    摘要:本文主要介绍宜信微服务架构的基础设施建设,及如何更好地服务与赋能实际业务. 内容来源:宜信技术学院第8期技术沙龙-线上直播|宜信微服务架构落地及其演进 主讲人:宜信高级架构师 & 宜信科 ...

  4. 微服务技术选型【转】

    转自:https://www.cnblogs.com/wangdaijun/p/9322175.html 转: http://www.youmeek.com/microservice/ 后端类开发总结 ...

  5. ThoughtWorks专家:使用 DDD 指导微服务拆分的逻辑

    对于服务拆分的逻辑来说,是先设计高内聚低耦合的领域模型,再实现相应的分布式系统.服务的划分有一些基本的方法和原则,通过这些方法能让微服务划分更有操作性.最终在微服务落地实施时也能按图索骥,无论是对遗留 ...

  6. 多云架构下,JAVA微服务技术选型实例解析

    微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. 目前比较成熟的 JAVA 微服务生态包括 servicecomb(华为), spring-cloud ...

  7. 微服务浅述---架构演进

    微服务浅述---架构演进 提到架构演进,我们很容易想到'单体应用---分布式/SOA---微服务'的演进过程,那么为什么会有这个必然演进?演进的过程中遇到了哪些坑?是怎么解决这些坑的? 为什么会有这个 ...

  8. 如何使用 DDD 指导微服务拆分?

    点击上方肉眼品世界, 右上角选择"设为星标 深度价值体系传递 开发者在刚开始尝试实现自己的微服务架构时往往会产生一系列问题 : 微服务到底应该怎么划分? 一个典型的微服务到底应该有多微? 如 ...

  9. 迭代开发中的微服务拆分

    微服务拆分是微服务架构绕不过的话题,随着架构演进,在迭代开发中拆分微服务有时非常必要,微服务拆分不仅仅是一项技术层面的重构,首先要选择的合适的时机,另外在拆分前一定要理清业务现状,制定好拆分的基本原则 ...

最新文章

  1. LeetCode Battleships in a Board
  2. hibernate-Maven
  3. linux如何用cat看一行数据库,linux的cat命令
  4. 通过django 执行命令或者脚本
  5. 本地存储Sqlite的用法:
  6. sql语句中用select语句查询值大于平均值的情况
  7. 抽象代数学习笔记四《群:子群、同构、同态》
  8. 爱心的数学函数方程_求心形函数表达式~~~
  9. 统计推断—假设检验(hypothesis testing)
  10. 调用自定义模块出现ModuleNotFoundError: No module named ‘XXX‘的解决方案
  11. 【JS】js判断等号、等同(===、==)
  12. QT Creator 7 如何同时运行多个客户端窗口(Client)
  13. 不符合python命名规则的是_下面不符合Python语言命名规则的是__________。
  14. 207最新android书籍,《最强Android书 架构大剖析》PDF(高清版)
  15. kubernets(四)创建高可用集群
  16. 计算机网络哪个学校好厦门,厦门较好的的计算机学校有哪几间
  17. Sublime Text使用技巧
  18. 完全卸载office(手动卸载)、微软工具自动卸载、安装Office时提示错误1310、写入文件“GROOVEEX“时错误,请确认您有权限访问该目录
  19. 学习安全第一阶段收集的网站总结
  20. Pytorch 含并行连结的网络 GoogLeNet

热门文章

  1. 【图论专题】有向图的强连通分量
  2. Android使用smack连接openfire(本地+远程)
  3. java spring框架 注解_史上最全的java spring注解
  4. ORA-25155: NATURAL 联接中使用的列不能有限定词
  5. HTML保存节点,{HTML5}DOM节点操作-第一节
  6. springboot整合dubbo_springboot整合dubbo设置全局唯一ID进行日志追踪
  7. R pdf大小_怎样给PDF添加批注并同步到手机里?
  8. Linux TOP 命令显示详情
  9. 什么是PRD、MRD与BRD?
  10. red hat关于桥接模式连不上外网或者没有IP