设计为服务的最佳实践(转) 设计微服务的最佳实践

设计微服务的最佳实践

 

你是否曾想过,什么是微服务?以及大规模的互联网行业,例如社交,电商,物流,金融等领域,如何使用微服务构建互联网应用以知足用户需求。html

要了解微服务是什么,你必须了解如何将单体应用程序,拆解为独立打包和部署的微型应用程序。本文章将帮助你清晰化的理解,开发者如何根据需求使用微服务来构建他们的应用程序。数据库

下面,从如下几个维度进行阐述 服务器

为什么选择微服务? 架构

什么是微服务? app

微服务架构的功能负载均衡

微服务架构的优势 框架

设计微服务的最佳实践 微服务

1,为什么选择微服务? 

如今,在我介绍微服务以前,让咱们看看在微服务以前流行的架构,即单体架构。工具

通俗地说,您能够说它相似于一个大容器,在这个容器中,应用程序的全部软件组件被紧密地打包并部署在一块儿。组件化

罗列一下单片架构的挑战:

 

不灵活 - 单片应用程序没法使用不一样的技术构建

不可靠 - 即便系统的某个功能不起做用,整个系统也不起做用

不可扩展 - 因为每次须要更新应用程序时都没法轻松扩展应用程序,所以必须重建整个系统

妨碍持续开发 - 没法同时构建和部署应用程序的多个功能

缓慢的开发 - 单体应用程序的开发须要花费大量的时间来构建,由于每一个功能都必须一个接一个地构建

不适合复杂的应用程序 - 复杂应用程序的功能具备紧密耦合的依赖关系

上述挑战是致使微服务发展的主要缘由。

2,什么是微服务? 

微服务,又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合。

在微服务架构中,每一个服务都是独立的,并实现单一业务功能。

传统架构与微服务架构之间的差别

以电子商务网站为例,了解它们之间的差别。

咱们在上图中观察到的主要区别是,全部功能最初都在共享单个数据库的单个实例下。 可是,经过微服务,每一个功能都被分配了不一样的微服务,处理本身的数据,并执行不一样的功能。

 

如今,让咱们经过查看其架构来了解有关微服务的更多信息。请参考下图:

 

微服务架构

1,来自不一样设备的不一样客户端尝试使用不一样的服务,如搜索,构建,配置和其余管理功能

2,全部服务都根据其域和功能分开,并进一步切分红各个微服务

3,这些微服务有本身的负载均衡器和执行环境来执行它们的功能,同时在本身的数据库中捕获数据

4,全部微服务都经过无状态服务器(REST或消息队列)相互通讯

5,微服务在服务发现中心的帮助下获取其通讯路径,并执行自动化,监控等操做功能

6,而后,微服务执行的全部功能都经过API网关传达给客户端

7,全部内部点都从API网关链接。所以,任何链接到API网关的人都会自动链接到整个系统

如今,让咱们经过查看其功能来了解有关微服务的更多信息。

3,微服务功能 

解耦 - 系统内的服务很大程度上是分离的。所以,整个应用程序能够轻松构建,更改和扩展

组件化 - 微服务被视为能够轻松更换和升级的独立组件

业务能力 - 微服务很是简单,专一于单一功能

自治 - 开发人员和团队能够彼此独立工做,从而提升速度

持续交付 - 经过软件建立,测试和审批的系统自动化,容许频繁发布软件

职责 - 微服务不关注做为项目的应用程序。相反,他们将应用程序视为他们负责的产品

分散治理 - 重点是使用正确的工具来作正确的工做。这意味着没有标准化模式或任何技术模式。开发人员能够自由选择最有用的工具来解决他们的问题

敏捷 - 微服务支持敏捷开发。任何新功能均可以快速开发并再次丢弃。 

4,微服务的优势 

独立开发 - 全部微服务均可以根据各自的功能轻松开发

独立部署 - 基于其服务,能够在任何应用程序中单独部署它们

故障隔离 - 即便应用程序的一项服务不起做用,系统仍可继续运行

混合技术堆栈 - 可使用不一样的语言和技术来构建同一应用程序的不一样服务

粒度缩放 - 单个组件可根据须要进行部署节点缩放,无需将全部组件部署缩放在一块儿 

5,设计微服务的最佳实践

在当今世界,复杂性已经蔓延到互联网的每一个产品当中。微服务架构有望保持团队规模和功能更好。

 

如今,让咱们看一个案列来更好地理解微服务。

 

案例:购物网站

当您打开购物网站时,您看到的只是一个购买页面。可是,在幕后,购物网站具备接受付款的服务,用于客户咨询的服务等

假设此网站的开发人员已在单一框架中建立它。请参阅下图:

所以,全部功能都放在一个代码库中,而且位于单个底层数据库下。

如今,让咱们假设市场上出现了一个新的品牌,开发商但愿将即将到来的品牌全部细节都放在这个网站中,原有的数据库结构和UI展现已经没法知足。

而后,他们不只须要为新标签重作服务,并且还必须从新构建整个系统并相应地进行部署。

为避免此类挑战,购物网站的开发人员决定将其应用程序从单片架构转移到微服务。请参阅下图了解购物网站的微服务架构。

这意味着开发人员不会建立Web微服务,逻辑微服务或数据库微服务。相反,他们为搜索,推荐,客户服务等建立单独的微服务。

 

这种类型的应用程序架构不只能够帮助开发人员克服之前架构所面临的全部挑战,还能够帮助轻松构建,部署和扩展购物车应用程序。

经过上述案列,咱们能够总结出来,设计微服务的最佳实践:

1,为每一个微服务分别存储数据

2,将代码保持在相似的成熟度级别

3,为每一个微服务单独构建

4,部署到容器

5,将服务设计为无状态服务

相关文章
相关标签/搜索