• 什么样的服务是好服务

  松耦合:能够独立修改及部署单个服务而不需要修改系统的其它部分。

  高内聚:把相关的行为聚集在一起,把不相关的行为放在别处。这样如果要改变某个行为时,就能够只在一个地方进行修改,然后就可以尽快发布了。

  • 界限上下文

  任何一个给定的领域都包含多个界限上下文,每个界限上下文中的东西分成两部分,一部分不需要与外部通信,另一部分则需要。每个上下文都有明确的接口,该接口决定了它会暴露哪些模型给其他的上下文。

  • 留心过多的约定

  有些工具会为了短期利益而牺牲长期利益,为了让你一开始启动得足够快,它们会使用一些不好的实践。比如有些框架可以很容易地表示数据库对象,并把它们反序列化成进城内的对象,然后直接暴露给外部。这种方式内在的耦合性所带来的痛苦会远远大于一开始就消除概念之间的耦合所需要的代价。

  我们很容易把存储的数据直接暴露给消费者,那么如何避免这个问题呢?一个很有效的模式是先设计外部接口,等到外部接口稳定知道再实现微服务内部的数据持久化。在此期间,简单地将实体持久化道本地磁盘的文件上,当然这并非长久之计。这样做可以保证服务的接口是由消费者的需求驱动出来的,从而避免数据存储方式对外部接口的影响。其缺点是推迟了数据存储部分的集成。

  • 基于HTTP的REST的缺点

  从易用性来讲,基于HTTP的REST无法生成客户端的桩代码,而RPC可以。

  有些Web框架无法很好地支持所有的HTTP动词。

  性能上也可能会遇到问题,基于HTTP的REST支持不同的格式,如JSON或二进制,所有负载相对SOAP来说更加紧凑,在要求低延迟的场景下,每个HTTP请求的封装开销可能是个问题。所以,对于服务和服务之间的通信来说,如果低延迟或者较小的消息尺寸对你来说很重要的话,那么一般来讲HTTP不是一个好方法。

  有些RPC的实现支持高级的序列化和反序列化机制,然而对于REST而言,这部分工作就要自己做了。

转载于:https://www.cnblogs.com/IvySue/p/6961441.html

《微服务设计》(三)---- 集成相关推荐

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

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

  2. 微服务集成——《微服务设计》读书笔记

    一.理想的集成应该是什么样的? 1.避免破坏性修改 如果在一个微服务的响应中添加一个字段,服务的消费方不应该受到影响. 2.保证API的技术无关性 微服务之间的通信应该是与技术无关的. 3.使服务的消 ...

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

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

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

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

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

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

  6. 基于实战开发垂直搜索引擎_基于DDD的微服务设计和开发实战

    作者:欧创新.邓頔.文艺 你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务 ...

  7. ddd 访问权限_基于DDD的微服务设计和开发实战

    作者:欧创新.邓頔.文艺 你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务 ...

  8. 深度解析DDD中台和微服务设计

    导读:本文来源于 2020 年第四届 DDD 中国峰会主题演讲:<当中台遇上 DDD,如何设计微服务>.DDD 非常强调统一语言,而 DDD.中台与微服务产生于不同的时代,三者分别属于不同 ...

  9. 微服务设计指导-使用云原生微服务解决传统海量跑批时引起的系统间“级联雪崩”以及效率

    问题描述 这也是一起真实的生产事故,如下图所示 这种"雪崩"是属于企业内部系统雪崩. 我们都知道如果是在外部http (包括一切restful.soap请求.http类型调用)调用 ...

  10. 领域驱动设计(DDD)实践之路(四):领域驱动在微服务设计中的应用

    这是"领域驱动设计实践之路"系列的第四篇文章,从单体架构的弊端引入微服务,结合领域驱动的概念介绍了如何做微服务划分.设计领域模型并展示了整体的微服务化的系统架构设计.结合分层架构. ...

最新文章

  1. 一款小巧好用的MAC地址扫描器
  2. 配置oracle 11g环境,oracle 11g 的安装环境的配置
  3. 共享卫士完全设置教程图解
  4. 如何在maven环境中设置JVM参数
  5. ActiveMq Windows 配置优化
  6. Android之Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描指定文件
  7. 2)机器学习基石笔记Lecture2:Learning to Answer Yes/No
  8. php request对象,PHP 中TP5 Request 请求对象的实例详解
  9. python怎么读取pdf为文本_如何从pdf文件中提取特定文本python
  10. Mac Safari浏览器的阅读列表与iPhone、iPad (iOS)不同步的问题
  11. spl_autoload_register 和 __autoload()魔术方法
  12. WPS安装office自定义项安装期间出错
  13. 先验概率、后验概率、贝叶斯公式的通俗解释
  14. 【Java教程】Java 抽象工厂模式
  15. 中级微观经济学:Chap 15 市场需求
  16. 新炬网络签约GBASE南大通用 让中国用户用上世界级国产数据库
  17. 三、Linux 教程-基础命令(181~完)
  18. 爬取豆瓣电影分类排行榜
  19. 一个机械研究生在计算机与机械之间的徘徊与思考-(下)之填坑
  20. Containerd镜像lazy-pulling「详细解读 」

热门文章

  1. JVM总结---各处总结
  2. 王佩丰第2讲-excel单元格格式设置 笔记
  3. adult道具项目开发 - 模式
  4. 我的第一份vim程序
  5. InChatter系统开源聊天模块前奏曲
  6. [存储引擎基础知识]InnoDB与MyISAM的六大区别(非原创)
  7. 浅谈BPM和SOA架构下的电子政务系统
  8. 发掘VS2005 SP1 (一)
  9. SecureCRT 使用指南
  10. Linux|UNIX下LAMP环境的搭建及常见问题[连载3]