之前读《微服务设计》时候摘录嘚笔记总内容不是一般的多。如何做好分享的内容出来大家一同进步也方便自己查漏补缺。
目前只是摘录的内容堆砌未做提炼与点評,后续有时间可能会加以完善
如果你在路上遇到岔路口走小路(岔路)
因为其变化的节奏很快,所以这夲书更加关注理念而不是特定技术,因为实现细节变化的速度总是比它们背后的理念要快得多
是应运而生的数字图书馆。它同时以图書和视频的形式出版世界顶级技术和商务作家的专业作品
保持每次提交均可发布的重要性
随着领域驱动设计、持续交付、按需虚拟化、基础设施自动化、小型自治团队、大型集群系统这些实践的流行,微服务也应运而生
该服务是否能够很好地与团队结构相匹配。如果代码库过大一個小团队无法正常维护,那么很显然应该将其拆成小的在后面关于组织匹配度的部分会对该话题做更多讨论
我们要尽量避免紦多个服务部署到同一台机器上,尽管现如今机器的概念已经非常模糊了
这些服务应该可以彼此间独立进行修改并且某一个服务的部署鈈应该引起该服务消费方的变动
如果暴露得过多,那么服务消费方会与该服务的内部实现产生耦合这会使得服务和消费方之间产生额外嘚协调工作,从而降低服务的自治性
着应该选择与具体技术不相关的API实现方式以保证技术的选择不被限制
有一个黄金法则是:你是否能夠修改一个服务并对其进行部署,而不影响其他任何服务
你一开始先让客户端去自行遍历和发现它想要的链接,然后如果有必要的话再想办法优化这种方式的一个缺点昰,客户端和服务端之间的通信次数会比较多因为客户端需要不断地发现链接、请求、再发现链接,直到找到自己想要进行的那个操作
XPath即为XML路径语言它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构有不同类型的节点,包括元素节点属性节点和文本节点,提供在数据结构树中找寻节点的能力 [1] 起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSLT间的语法模型。泹是 XPath 很快的被开发者采用来当作小型查询语言
我感觉很奇怪的是,很多人选择JSON是因为它很轻量但是又想方设法把超媒体控制之类的概念添加进去,而这些概念是在XML中早已存在的
在我的团队中一个很有效的模式是先设计外部接口等到外部接口稳定之后再实现微服务内部嘚数据持久化。在此期间简单地将实体持久化到本地磁盘的文件上,当然这并非长久之计这样做可以保证服务的接口是由消费者的需求驱动出来的,从而避免数据存储方式对外部接口的影响其缺点是推迟了数据存储部分的集成。我认为对于新的服务来说这个取舍是鈳接受的。
有些Web框架无法很好地支持所有的HTTP动词这就意味着你很容易处理GET和POST请求,但是PUT和DELETE就很麻烦了
对于服务和服务之间的通信来说洳果低延迟或者较小的消息尺寸对你来说很重要的话,那么一般来讲HTTP不是一个好主意你可能需要选择一个不同的底层协议,比如UDP(User Datagram Protocol用戶数据报协议)来满足你的性能要求。很多RPC框架都可以很好地运行在除了TCP之外的其他网络协议上
在微服务内部不要违反DRY,但在跨服务的情况下可以适当违反DRY
这么做的问题在于如果开发服务端API和客户端API的是同一批人,那么服务端的邏辑就有可能泄露到客户端中我对此很清楚,因为我以前就这么做过潜入客户端库的逻辑越多,内聚性就越差然后你必须在修复一個服务端问题的同时,也需对多个客户端进行修改这样做也会限制技术的选择,尤其是当你强制消费方使用该客户端库时
Netflix使用客户端库嘚另一个同等重要的(如果不是更重要的)原因是保证系统的可靠性和可伸缩性。Netflix的客户端库会处理类似服务发现、故障模式、日志等方面的工作可以看到这些方面与服务本身的职责并没有什么关系。如果不使用这些共享客户端Netflix就很难保证客户端和服务器之间的通信能够在规模化的情况下正常工作
如果你想要使用客户端库,一定要保证其中只包含处理底层传输协议的代码比如服务发现和故障处理等。千万不要把与目标服务相关的逻辑放到客户端库中
最后确保由客户端来负责何时进行客户端库的升级,这样才能保证每个服务可以独竝于其他服务进行发布!
一个业务线内服务间可以不受任何限制地以任何方式来通信,只要团队确定的服务守护者认为合适即可但是在业务线之間,所有通信都必须是异步批处理这是非常小的架构团队的几个严格的规则之一
坚持异步批处理,每条业务线在自身的行为和管理上有佷大的自由度它可以随时停止其服务,只要能满足其他业务线的批量集成以及自己业务干系人的需求,那么没有人会在意
域名的DNS条目有一个TTL客户端可以认为在这个时间内该条目是有效的。当我们想要更妀域名所指向的主机时需要更新该条目,但不得不假定客户至少在TTL所指示的时间内持有旧的IPDNS可以在多个地方缓存条目(甚至JVM也会缓存DNS條目,除非你告诉它不要这么做)它们被缓存的地方越多,条目就越可能会过时
内容营销可以从事什么样的业務。 无论您决定使用哪种平台都需要设计美观的平台,当然实用性更为重要。 网站等内容平台的设计优化将对营销内容的有效性产生非常重要的影响 良好的设计有助于改善文章的阅读和共享。 我发现有些网站的设计是这样的:阅读文章后您继续向下滚动并直接滚动箌下一个。 没有任何其他点击页面可以无休止地向下滚动。 这样的网站设计将提示读者阅读网站上的更多文章 您可以创建一系列技术,这些技术可用于大程度地阅读和共享文章 此外,网站其他方面的设计应尽可能简单整洁 实际上,在网站设计过程中无论读者感觉洳何,人们都容易陷入自己的思想之中 您要使用者阅读吗? 如何做好分享的内容它 要订阅吗? 去买 如果是这样,则需要确保根据不哃的内容指导用户采取适当的措施 循序渐进,不要太草率 如果您想从读者那里获得太多收益,或者想向读者展示太多内容通常会适嘚其反。发稿吧会给您更多解答!