微服务与服务治理的区别(什么是服务注册与发现)
什么是微服务本文地址http://yangjianyong.cn/?p=657转载无需经过作者本人授权现在最为流行的软件架构就是微服务,也确实微服务带来的生产效率更加的提高了。什么是微服务,就是将传统整体大型的系统,根据功能的不同拆分成多个小型的且能够独立运行的服务,再通过有组织的明确定义的API在各个不同的小型的服务间进行通信。这些多个小型的服务可以由独立的团队管理。通俗的理解:例如在福特汽车还没发明出流水线这种工作模式之前,一个工人在生产一辆汽车先要从发动机,再到变速箱再到底盘等等最后一辆车的组装完成都会参与到。但是有了流水线的工作模式后,在一条生产线上,按照各个汽车零件的功能划分,分成了不同的生产车间。这些不同的车间按照规定的技术标准生产出零件,最后再组装到一块。在我们开发一个电商系统时,电商系统有分用户模块 / 商品模块 /订单模块 / 财务模块等等。整个电商系统就是就是在生产一辆车,车上的不同零件就是电商系统中不同的模块。传统的开发模式就是先把用户模块开发出来让用户可以注册,再开发商品模块可以上线商品,再开发订单模块可以让用户购买等等,在这个过程中程序员会涉及到整个系统的开发,并且都是使用的统一的技术栈。而使用微服务的架构模式,就是类似于流水线。不同的模块将由不同的团队开发,每个团队使用的技不必统一。只需要在对外提供统一标准协议的API接口即可。
微服务的特性颗粒度小每个服务只专注做一件事。例如负责用户模块的团队,就只专注处理用户问题,其他的订单问题 / 商品问题不闻不问。自主性每个独立的服务都可以拥有自己的技术栈,部署环境,独立运行,互不依赖。例如用户模块可以用php语言开发部署在阿里云;订单模块可以用java语言开发部署在华为云。轻量化的通信机制各个不同的服务之间,通常使用REST / HTTP协议的接口进行通信。
微服务的优点敏捷性微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,并且可以更独立、更快速地工作。这缩短了开发周期时间。您可以从组织的总吞吐量中显著获益。灵活扩展通过微服务,您可以独立扩展各项服务以满足其支持的应用程序功能的需求。这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。轻松部署微服务支持持续集成和持续交付,可以轻松尝试新想法,并可以在无法正常运行时回滚。由于故障成本较低,因此可以大胆试验,更轻松地更新代码,并缩短新功能的上市时间。技术自由微服务架构不遵循“一刀切”的方法。团队可以自由选择最佳工具来解决他们的具体问题。因此,构建微服务的团队可以为每项作业选择最佳工具。可重复使用的代码将软件划分为小型且明确定义的模块,让团队可以将功能用于多种目的。专为某项功能编写的服务可以用作另一项功能的构建块。这样应用程序就可以自行引导,因为开发人员可以创建新功能,而无需从头开始编写代码。弹性服务独立性增加了应用程序应对故障的弹性。在整体式架构中,如果一个组件出现故障,可能导致整个应用程序无法运行。通过微服务,应用程序可以通过降低功能而不导致整个应用程序崩溃来处理总体服务故障。
微服务解决了什么问题缩短开发时间微服务可以通过分布式部署,大幅的提升团队的开发效率。相较传统的线性开发,微服务架构下可以并行开发。快速上线产品缩短了开发时间,等同于加快产品面市,可帮助企业快速抢占市场。高度可扩展在服务独立的背景下,在原有的系统上新添加功能模块比传统单体架构显得更加容易。更加稳定传统的单体架构下,一旦某一个模块出问题,整体服务将停摆。而微服务可以将各个独立的服务重复部署,这样将大大的增加整体系统的稳定性。易于部署由于各个服务的独立化,可以使用不同的技术栈。不用再去操心部署的问题。
实现微服务涉及到的技术服务注册与发现服务注册就是把某个微服务的通信信息注册到一个公共的组件中心,比如常用的zookeeper / consul。服务发现就是跟服务注册相反的,每一个在组件中心注册的通信信息要能够及时的被其他微服务发现。要理解服务注册与发现,要先来看下架构的发展史:Web1.0架构:
微服务的特性颗粒度小每个服务只专注做一件事。例如负责用户模块的团队,就只专注处理用户问题,其他的订单问题 / 商品问题不闻不问。自主性每个独立的服务都可以拥有自己的技术栈,部署环境,独立运行,互不依赖。例如用户模块可以用php语言开发部署在阿里云;订单模块可以用java语言开发部署在华为云。轻量化的通信机制各个不同的服务之间,通常使用REST / HTTP协议的接口进行通信。
微服务的优点敏捷性微服务促进若干小型独立团队形成一个组织,这些团队负责自己的服务。各团队在小型且易于理解的环境中行事,并且可以更独立、更快速地工作。这缩短了开发周期时间。您可以从组织的总吞吐量中显著获益。灵活扩展通过微服务,您可以独立扩展各项服务以满足其支持的应用程序功能的需求。这使团队能够适当调整基础设施需求,准确衡量功能成本,并在服务需求激增时保持可用性。轻松部署微服务支持持续集成和持续交付,可以轻松尝试新想法,并可以在无法正常运行时回滚。由于故障成本较低,因此可以大胆试验,更轻松地更新代码,并缩短新功能的上市时间。技术自由微服务架构不遵循“一刀切”的方法。团队可以自由选择最佳工具来解决他们的具体问题。因此,构建微服务的团队可以为每项作业选择最佳工具。可重复使用的代码将软件划分为小型且明确定义的模块,让团队可以将功能用于多种目的。专为某项功能编写的服务可以用作另一项功能的构建块。这样应用程序就可以自行引导,因为开发人员可以创建新功能,而无需从头开始编写代码。弹性服务独立性增加了应用程序应对故障的弹性。在整体式架构中,如果一个组件出现故障,可能导致整个应用程序无法运行。通过微服务,应用程序可以通过降低功能而不导致整个应用程序崩溃来处理总体服务故障。
微服务解决了什么问题缩短开发时间微服务可以通过分布式部署,大幅的提升团队的开发效率。相较传统的线性开发,微服务架构下可以并行开发。快速上线产品缩短了开发时间,等同于加快产品面市,可帮助企业快速抢占市场。高度可扩展在服务独立的背景下,在原有的系统上新添加功能模块比传统单体架构显得更加容易。更加稳定传统的单体架构下,一旦某一个模块出问题,整体服务将停摆。而微服务可以将各个独立的服务重复部署,这样将大大的增加整体系统的稳定性。易于部署由于各个服务的独立化,可以使用不同的技术栈。不用再去操心部署的问题。
实现微服务涉及到的技术服务注册与发现服务注册就是把某个微服务的通信信息注册到一个公共的组件中心,比如常用的zookeeper / consul。服务发现就是跟服务注册相反的,每一个在组件中心注册的通信信息要能够及时的被其他微服务发现。要理解服务注册与发现,要先来看下架构的发展史:Web1.0架构:
原文链接:https://www.cnblogs.com/yangjianyong-bky/p/15318941.html
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com