1.1 什么是微服务
微服务就是一些协同工作的小而自治的服务。
1.1.1 专注于做好一件事
随着新功能的增加,代码库会越变越大。时间久了代码库会非常庞大,以至于想要知道该在什么地方做修改都很困难。在一个单块系统内,通常会创建一些抽象层或者模块来保证代码的内聚性,从而避免上述问题。内聚性是将相关代码放在一起,在考虑使用微服务的时候,内聚性这一概念很重要。
微服务将这一理念应用在独立的服务上。根据业务的边界来确定服务的边界,这样久很容易确定某个功能代码应该放在哪里。而且由于该服务专注于某个边界之内,因此可以很好地避免由于代码库过大衍生出的很多相关问题。
1.1.2 自治性
一个微服务就是一个独立的实体。它可以独立地部署在服务器上。尽量避免把多个服务部署到同一台机器上,尽管这种隔离性会引发一些代价,但它能够大大简化分布式系统的构建。
服务之间通过网络调用进行通信,从而加强了服务之间的隔离性,避免紧耦合。
对于一个服务来说,我们需要考虑的是什么应该暴露,什么应该隐藏。如果暴露得过多,那么服务消费方会与该服务的内部实现产生耦合。服务会暴露出API,然后服务直接通过这些API进行通信。API的实现技术应该避免与消费方耦合。
1.2 主要好处
1.2.1 技术异构性
1.2.2 弹性
1.2.3 扩展
1.2.4 简化部署
1.2.5 与组织结构相匹配
1.2.6 可组合性
1.2.7 对可替代性的优化

松耦合
如果做到了服务之间的松耦合,那么修改一个服务久不需要修改另一个服务。使用微服务最重要的一点是,能够独立修改及部署单个服务而不需要修改系统其他部分。
高内聚
把相关行为聚集在一起,把不相关的行为放在别处。如果你需要改变某个行为的话,最好能够在一个地方进行修改,然后就可以尽快地发布。如果需要在很多不同的地方做这些修改,那么可能就需要同时发布多个微服务才能交付这个功能。在多个不同的地方进行修改会很慢,同时部署多个服务风险也很高。
限界上下文
一个由显示边界限定的特定职责。
当你在思考组织内限界上下文时,不应该从共享数据角度来考虑,而应该从这些上下文能够提供的功能来考虑。

监控
将系统拆分成更小的、细粒度的微服务会带来很多好处。然而它也增加了生产系统的监控复杂性。
监控小的服务,然后聚合起来看整体。
多个服务,多个服务器
你如何在多个主机上的、成千上万行的日志中定位错误的原因?如何确定一个服务器异常,还是一个系统性的问题?如何在多个主机间跟踪一个错误的调用链,找出引起这个错误的原因?
答案是,从日志到应用指标,集中收集和聚合尽可能多的数据到我们的手上。

转载于:https://www.cnblogs.com/kxm87/p/9865890.html

微服务设计 读书笔记 一相关推荐

  1. 微服务架构师的职责——《微服务设计读书笔记》

    如何定义架构师 架构师从英文单词Architect翻译而来,在英文中,Architect原来的意思是"建筑师".作者吐槽英文中架构师与传统的建筑师单词相同,但实际的工作性质并不相同 ...

  2. 中台架构与实现(基于DDD和微服务)-读书笔记1

    前绪 一.DDD(Domain Driven Design,领域驱动设计).微服务.中台 中台需要将通用的.可复用的业务能力沉淀到中台,实现企业级能力的复用.企业在进行中台建设时首先要从业务领域出发, ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. SQL语句中order_by_、group_by_、having的用法区别
  2. 如何查看 JSP 和 Servlet 的版本
  3. 艾伟_转载:WPF/Silverlight陷阱:XAML自定义控件的嵌套内容无法通过名称访问
  4. 微信支付教程系列之扫码支付
  5. C4C的Rich text editor的JavaScript实现
  6. getSerializableExtra
  7. 学生命科学要学计算机吗,现在学生物学出路真的有那么不济吗?
  8. java双机和集群的区别,java 分布式与集群的区别和联系
  9. 计算机网络的权威杂志,科学网—晒个自己整理的计算机网络和通信方向可能相关的期刊列表...
  10. 基于 HTML5 + WebGL 的太阳系 3D 可视化系统
  11. MyBioSource丨人Hif1αelisa试剂盒解决方案
  12. 未将对象引用到对象的实例
  13. 使用计算机读取其时钟值,计算机网络中的时间同步
  14. 工厂服务器系统,各种工厂时钟系统解决方案
  15. Navicat如何导出数据字典
  16. 安徽省六安市谷歌卫星地图下载
  17. lock与unlock
  18. 重磅发布!阿里云混合云:全栈建云、智能管云、极致用云 | 凌云时刻
  19. 在一个给定范围的区间内找到该区间所有的质数(素数)
  20. [翻译] [LaTeX] Misplaced \noalign

热门文章

  1. shell脚本详解(三)——循环语句之for循环
  2. RT-Thread uart串口设备驱动代码结构剖析
  3. 虚拟机下Ubuntu共享主机文件(Ubuntu、VMware、共享) .
  4. java1.5特性_JDK核心API:Java1.5语言新特性简单总结
  5. mongodb创建用户名和密码_Python中使用MongoDB详解
  6. 加拿大大学计算机排名2015,加拿大大学计算机排名
  7. 把一个人的特点写具体作文_部编版五年级下册语文 第五单元:习作 | 把一个人的特点写具体 电子课本+教案课件...
  8. python歌词统计单词词频_Python爬虫网易云歌词及词频统计
  9. linux内核c1bcbc40,【资料共享】给学习linux内核的大餐
  10. java信号灯_java 多线程-信号灯法