您的位置
主页 > 热点专题 » 正文

华云数据:浅谈微服务架构下的服务发现机制

来源:www.ipm-china.com.cn 点击:937

随着云计算业务的快速发展,国内外云计算企业之间的专利纠纷越来越激烈。在云计算等技术领域,专利储备往往代表企业的最新技术实力。华云数据本期专栏《智辉华云》将在“微服务架构的服务发现”技术上与大家分享云计算的最新技术。

由于业务量的大幅增长,华云数据决定重组业务增长带来的持续膨胀的单一应用,重组后的应用选择微服务架构。微服务架构的最大优势是语言的开放性,并且可以根据业务场景选择最合适的语言。此外,技术堆栈中一个以上公司的组织结构也可以带来很好的集成和合作机会。华云数据的主要技术栈是JAVA和PHP。由于JAVA不需要多说什么,它的微服务框架spring cloud对微服务有非常全面和完美的一站式支持,这只是微服务架构开发的一个利器,而PHP是有缺陷的,特别是在服务治理方面。例如,注册和发现服务是很痛苦的。

我们的计划

1。为什么我们应该使用服务发现

下面的图1是一个简单的高可用性架构图。我们看到集群组部署了3个节点,每个节点分别部署了一个服务A。它前面有负载平衡。以nginx为例,我们将在配置文件中手动配置这三个节点的服务A的地址,并根据加载策略转发它们。

图1

这是一种传统方式。服务的地址是固定的。如果服务的地址是灵活的呢?下图2。

图2

与传统方式不同,服务的地址是灵活多变的。这种灵活性带来的最大优势是,服务可以根据流量、CPU、内存和其他开销以及某些策略横向扩展或减少服务实例。除了支持大量高峰访问,它还可以带来巨大的成本节约。此外,特别是,软件或解决方案(如docker及其派生库伯纳特)为这种资源调度、灵活扩展和架构监控提供了良好的基础层保证。回头看,由于服务地址是可变的,手动配置方法绝对不合适。我们需要一种机制来自动发现服务地址的变化。

2。服务发现机制和方法

该机制是服务发现,也是微服务体系结构中最常用的技术堆栈。如下图3所示,我们引入了一个注册中心。服务实例在启动时自动向注册中心注册地址。当访问相应的服务时,首先通过注册中心获得要访问的服务实例的地址,然后根据某个策略进行访问。

图3

有两个主要好处:

1。解决上述服务地址变更问题;

2。注册中心可以监控相应服务的状态。有了它,我们可以知道微服务体系结构中有多少服务,版本是什么,每个服务有多少实例,状态是什么。

服务发现有两种方式:

2。1服务器发现

1)服务实例启动时,地址会自动发布到注册中心。

2)调用服务时,客户机/服务器用服务名调用负载平衡器。负载平衡器接收请求,从注册中心获取服务地址,并根据负载策略访问特定服务。

这种方法的最大优点是服务器端实现了服务发现和加载。客户端不需要做任何额外的事情。强烈建议使用这种方法。下图4。

图4

2。2客户机发现

从下面的图5可以看出,与服务器的发现不同,要访问的服务的地址是由客户机从注册中心获得的,客户机需要实现加载(例如,有3个要访问的服务地址,然后客户机需要根据某个加载策略找到其中一个要访问的地址)。

图5

这种方法的最大特点是灵活性。客户或微服务可以根据自己的业务场景选择最佳负载策略,但缺点是显而易见的。客户或微服务

咨询是服务器端发现的典型例子。通过咨询模板,监控咨询中服务地址的变化,自动生成或更新nginx.conf,并生效配置。支持docker的

microservice体系结构的性质决定了它的复杂性。有数百个微服务,每个微服务可以分布在许多不同的节点上。因此,完整堆栈监控非常重要,服务发现是其中非常重要的一部分。通过它,我们可以知道整个系统有多少个微服务,版本是什么,每个服务有多少个实例,状态是什么。这些是一个完整的自动操作和维护架构的基础。充分发挥微服务架构的最大价值,大幅度减少运维人员在部署和问题调查中的冗余工作,大幅度提高工作效率非常重要。

这篇文章是网站管理员的家庭用户提交的。未经网站管理员同意,严禁复制。例如,如果大多数用户在稿件中发现虚假报告,欢迎读者反馈、纠正和报告问题(反馈入口)。

免责声明:这篇文章是对用户的贡献。网站管理员之家发表这篇文章只是为了传递信息。这并不意味着站长之家同意其观点,不对内容的真实性负责,仅供用户参考,不构成任何投资或使用建议。读者被要求核实真实性和可能的风险,任何后果将由读者自己承担。



日期归档