您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
     
   
 订阅
  捐助
一篇文章快速理解微服务架构下的数据设计
 
157 次浏览     评价:  
 2018-9-18
 
编辑推荐:
本文来自于51cto,文章主要从微服务的优势及架构特点以及微服务架构下的数据设计等方面,介绍在微服务架构下进行数据设计需要关注的方面。

微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。

本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮助大家在构建微服务架构时,提供一个数据方面的视角:

什么是微服务

微服务的优势及架构特点

微服务架构下的数据设计

一个适合微服务架构的数据库

什么是微服务

按照 Martin Fowler 的定义,微服务是一个软件架构模式,通过开发一系列的小型服务的方式来实现一个应用。

每一个这样的小服务通常都是运行在自己的进程里面,并且通过轻量级的 HTTP API 方式进行通讯。

这些服务通常会以业务模块为界限,能够被单独开发部署,往往都会用自动化的部署工具来进行产品的发布。

通过使用微服务方法,大公司可以更快推出新产品和服务,使得开发团队与业务目标保持一致。

微服务的优势及架构特点

微服务的优势

微服务方法体现出许多优势,包括更快的上线时间、灵活性、弹性、一致性以及相对更低的成本。

更快的上线时间

实施微服务架构可以使组织更快地将应用程序推向市场。对整体应用程序的更改(即使很小)需要重新部署整个应用程序堆栈,从而引入风险和复杂性。

相反,服务的更新可以立即提交、测试和部署,对个别服务的更改不会影响系统的其他部分。

更好的灵活性和可扩展性

微服务方法在扩展应用程序时也提供了灵活性。单片应用程序要求整个系统(及其所有功能)同时扩展。

使用微服务,只需要缩放需要额外性能的组件或功能。可以通过部署更多微服务实例来扩展服务范围,从而实现更有效的容量规划并降低软件许可成本,从而降低总体拥有成本。

弹性

使用单体应用程序时,组件的故障可能会危及整个应用程序。在微服务中,每项服务都是隔离的,以防止级联失败导致整个系统崩溃。

如果单个微服务的所有实例均失败,则整体服务可能会降级,但其他组件仍可提供有价值的服务。

更容易的规模化

微服务使技术团队能够与组织需求保持一致,并且可以调整团队的大小以匹配所需的任务。

通常,微服务团队规模较小,但是跨部门(如一般涵盖 Ops、Dev、QA),并专注于整个应用程序的单个组件。

通过提供对个人服务的所有权,而不是功能区域,微服务还可以打破团队之间的孤岛,并改善协作。

这种方法对于分布式和远程团队尤其强大。 例如,不同地点的团队可以独立发布和部署功能。

微服务的技术特点

让我们通过一个例子来了解微服务架构的技术特点。

联邦银行的架构师 Jonnathan 非常不喜欢他的产品经理 Mandy,因为他觉得 Mandy 永远有无穷无尽的想法要实现,搞得他成天就在不断地修改代码。

但是 Mandy 是老板的红人,而且用户对产品的反响也不错,所以很多时候他只能默默的服从。

这一天 Mandy 又成功的说服了老板要在他们的客户体验提升项目中增加舆情分析和 AI 客户服务模块,希望通过对社交媒体上有关联邦银行的所有评论进行实时的监控和分析来及时发现联邦银行的产品反馈或者用户体验问题。

Jonnathan 已经预感到了这样前所未有的应用场景,会有太多的未知和太多的改变,于是这次决定尝试使用 Microservices 来构建这个应用。

这个是 Jonnathan 设计的架构,系统要求对客户的社交账号,如 Facebook、Twitter、Google+ 及 Snapchat 公开的信息及评论进行收集,并在某些合适的时候使用 AI 技术直接和用户通过社交工具进行互动。

在上图这个架构里面,Jonnathan 把 4 个不同社交媒体的数据采集和交互用 4 个独立的模块进行实现。

并用一个 Feed Merge 服务,一个 Aggregate Service 把 4 个类似功能的微服务模块的数据和功能进行整合,提供给分析平台使用。

这里面每一个服务按照微服务的架构,每一个都是单独部署,在一个独立的容器内执行,并使用自己的一个数据库。

果不其然,系统上线一段时间后,Mandy 说 Google+ 上面几乎没有什么活动,不值得继续维护这样的一套系统。

Jonnathan 这次毫无抱怨,直接把负责 Google+ 的容器停了,没有需要任何代码改动,甚至完全没有需要对整个系统进行停机。

刚下线 Google+,Mandy 又来提需求说最近合并了另一家银行,客户很多使用 Whatsapp。

二话不说,Jonnathan 直接上了一个新的模块来处理 Whatsapp,如下图:

又过了一段时间,这一次是 Jonnathan 自己要对系统做调整了,原来 Snap