微服务拆分原则

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

微服务架构选型

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

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

第三点原则是掌控能力,假设一个框架是用 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. 看看我最关心的动态库中到底有多少函数 - gdiplus.dll
  2. Kafka 入门 and kafka+logstash 实战应用
  3. POJ3265 Problem Solving ——动态规划——Pku3265
  4. POJ 3267 The Cow Lexicon
  5. 记录uni-app弹框事件无生命周期问题;uni-popup-dialog打开触发事件;uni-popup-dialog调用接口时机
  6. oracle安装gcc报错,ubuntu 安装oracle10g
  7. 2022.7台式机装机指南(3060 + 12490F)
  8. 【计算机网络】网络通信基础
  9. tomcat中JSP跳转Servlet时卡白页的原因
  10. 【不知出处】危险的迷宫 网络流 费用流
  11. linux 中du和df的使用
  12. OpenModelica仿真RLC电路
  13. linux grub2 配置文件,grub2配置文件
  14. torch.flatten、np.flatten 详解
  15. Web_Dashboard开篇:如何在网页中制作炫酷的看板
  16. mvc api服务器文件上传,springMVC:跨服务器上传文件报409
  17. 广东开放大学形考任务财会法规与职业道德(专,2022秋)第三次考核答案
  18. Android直播实现(Android端推流、播放)
  19. 编码标准-GB2312 GBK GB18030
  20. Cesium 开发笔记-Vue 中使用 Cesium(vue-cli-plugin-cesium)

热门文章

  1. python文件读写_python文件操作-读写删除复制总结
  2. php四排序-选择排序
  3. 从零开始MDT2010学习手记(二) 创建共享工作目录
  4. 【Linux_Fedora_应用系列】_3_如何利用Smplayer播放WMV格式的文件
  5. 改进粒子群优化算法(IWAPSO)的MATLAB源程序
  6. centos使用yum安装gcc
  7. web.xml 常用标签配置(转)
  8. 今天遇到一个很奇怪的问题,XP系统屏幕全部旋转90度
  9. 保护眼睛设置.txt
  10. 极客新闻——09、如何打造核心骨干团队