1.关键是接缝服务应该是高内聚,低耦合。而在单块系统中,这2点往往都会被破坏。我们应该把经常一起变化的部分放在一起,从而实现内聚性,但是在单块系统中,所有不相关的代码都被放到了一起。类似的,松耦合也不复存在:修改一行代码很容易,但无法保证这一行代码不会对单块系统的其他部分造成影响。接缝:从接缝处可以抽取出相对独立的一部分代码,对这部分代码进行修改不会影响系统的其他部分。识别出接缝不仅仅能够清理代码库,更重要的是,这些被识别出的接缝可以成为服务的边界。那什么样的接缝才是好接缝呢?限界上下文就是一个非常好的接缝,因为它的定义就是组织内高内聚和低耦合的边界。2.分析MusicCorp识别出组组织中高层限界的上下文。产品目录财务仓库推荐首先创建包结构来表示这些上下文,然后把已有的包移动到相应的位置。过一段时间后,就可以看到哪些代码很好的找到了自己的位置,而哪些代码找不到合适的位置。这些剩下的代码可能就是我们遗漏掉的界限上下文。在这个过程中,我们还会使用代码来分析这些包的依赖。代码应该与组织相匹配,所以表示界限上下文的这些包之间的交互,也应该与组织中不同部分的实际交互方式一致。举个例子,如果发现仓库包依赖于财务包的代码,而真实组织中并不存在这样的依赖,那么就需要看看到底是什么问题,并想办法解决它。3.分解单块系统的原因决定把单块系统变小是一个很好的开始。建议慢慢开凿这些系统,增量的方式可以让你在进行的过程中学习微服务,同时也可以限制出错所造成的影响。可以把单块系统想象成一块大理石,我们可以把整块石头炸开,但这样做的结果通常非常不好。接缝已经找到了,那么应该把哪个先拉出来?最好考虑一下把那部分代码抽取出来得到的收益最大。有一些指到因素:1.改变的速度会加快后期的开发速度。2.团队结构3.安全4.技术11.重构数据库1.实施分离先分离数据结构,暂时不对服务进行分离。表结构分离后,对于原先的某个动作而言,对数据库的访问次数可能增多,在内存中进行连接。12.事务边界2个事务:1.再试一次2.终止整个操作(补偿事务)3.分布式事务15.通过服务调用来获取数据提供api16.数据导出写一个程序导出17.事件数据导出基于状态改变事件将事件数据导出18.数据导出的备份Cassandra

5.微服务设计 --- 分解单块系统相关推荐

  1. 拆分:分解单块系统——《微服务设计》读书笔记

    通常,我们可能已有有一个巨大的单块系统,如何实现微服务,我们需要把它分解. 从哪里开始拆分:接缝 接缝:从接缝处可以抽取相对独立的一部分代码,对这部分代码的修改不会影响系统的其他部分.这些接缝就可以作 ...

  2. 规模化微服务——《微服务设计》读书笔记

    改变思维的角度:故障无处不在 当微服务规模化后,故障是无可避免的,以往我们总是想尽力避免故障的发生,而当故障实际发生时,我们往往束手无策.我们花了很多时间在流程设计和应用设计的层面上来阻止故障的发生, ...

  3. 康威定律和系统设计——《微服务设计》读书笔记

    康威定律 任何组织在设计一套系统时,所交付的设计方案在结构上都与该组织的沟通结构保持一致. --梅尔.康威 如何理解这句话在软件工程上的含义?埃里克.S.雷蒙德说:如果你有四个小组开发一个编译器,那你 ...

  4. 安全——《微服务设计》读书笔记

    身份认证和授权       1.单点登录(SSO) 当主体试图访问一个资源,他会被定向到一个身份提供者那里进行身份验证,身份提供者验明正向后会发消息给服务提供者,让服务提供者来决定是否允许它访问资源. ...

  5. 监控——《微服务设计》读书笔记

    在单块应用的世界里,当我们遇到问题时,我们至少清楚从哪里开始调查.网站访问速度?网站访问异常?CPU占用过高?这些都是单块应用程序的问题,单一的故障点会极大地简化对问题的排查. 而现在我们面对了多个微 ...

  6. 测试——《微服务设计》读书笔记

    一.测试象限(Brain Marick) 二.测试金字塔(Mike Cohn)       1.单元测试 通常只测试一个函数或方法调用,通过TDD或者基于属性而写的测试就属于这一类,在UnitTest ...

  7. 部署:持续集成(CI)与持续交付(CD)——《微服务设计》读书笔记

    一.CI(Continuous Integration)简介  CI规则1:尽量频繁地把代码签入到分支中以进行集成 CI规则2:不光要对语法进行验,也要提供一系列的自动化来验证 CI规则3:CI失败后 ...

  8. python微服务开发pdf_《微服务设计》中文完整版PDF电子书下载

    版权声明 1. 本站文章和资源均来自互联网收集和整理,本站不承担任何责任及版权问题. 2. 相关版权归作者及其公司所有,仅供学习研究用途,请勿用于商业目的. 3. 请于下载后24小时内删除,如果喜欢此 ...

  9. 华为18级大牛倾情奉送:分布式服务框架和微服务设计原理实战文档,啃完发现涨薪如此简单

    前言 分布式服务框架不仅仅包含核心的运行时类库,还包括服务划分原则.服务化最佳实践.服务治理.服务监控.服务开发框架等,它是一套完整的解决方案,用来协助应用做服务化改造,以及指导用户如何构建适合自己业 ...

  10. 《微服务设计》读书笔记(上)

    第一章:微服务   关键词:轻量.自治. 1. 什么是微服务   微服务是一些协同工作的小而自治到服务.   特点:小.自治. 1.1 专注于做好一件事   功能迭代带来的问题:随着新功能的增加,代码 ...

最新文章

  1. 加密与解密以及openssl的应用
  2. morlet包络检波matlab,布里渊光纤传感系统中的信号处理的研究
  3. C++(Goto使用实例)
  4. HTML打开网页拒绝访问,192.168.1.1拒绝访问怎么办?
  5. redis-数据操作-键命令
  6. Scipy教程 - python数值计算库
  7. wps设置显示导航目录
  8. C语言开发windows桌面程序,演练:创建传统的 Windows 桌面应用程序 (c + +)
  9. google如何恢复误删除书签
  10. android 4.4 录屏方法,android 4.4 录屏方法
  11. powerbi 线性回归_精选 | 实用炫酷的Power BI自定义图表
  12. 原型图高保真和中保真的区别_最终确定您的高保真度UX概念验证
  13. 在线文档 - Google drive
  14. 名帖299 王铎 行书《书法册页李贺诗四首》
  15. 简述java异常机制处理,简述Java中异常处理的机制
  16. 【i春秋 CTF Crypto】2015广州强网杯致敬经典
  17. Android NKD初探
  18. ZZULI郑州轻工业大学21级新生赛正式赛
  19. Spark广播变量之超大表left join小表时如何进行优化以及小表的正确位置
  20. Ubuntu16.04--poco和boost库编译和安装

热门文章

  1. 队列——数组实现和链式实现
  2. Android Spinner 设置setOnItemSelectedListener时,竟会默认触发一次事件!
  3. 通过导航栏切换页面动画
  4. Android常用工具类 (转)
  5. intellij idea 的常用有用快捷键
  6. android中LayoutInflater详解与使用
  7. ASP.NET中操作SQL数据库
  8. Div 在页面中居中
  9. hihocoder 1866 XOR
  10. 计算机考研机试指南(九)——搜索(百鸡问题、ABC、胜利大逃亡、迷宫问题、C翻转、旋转矩阵、字符串匹配、)...