[学习微服务第9天] Service-Center使用入门

上一篇我们介绍了ServiceComb内置的负载均衡组件handler-loadbalance,本篇我们将介绍Service-Center使用入门。

 

一. Service-Center 是什么

ServiceCenter是一个服务注册中心。服务提供者可以将自身的实例信息注册到 ServiceCenter,以供服务消费者发现并使用它。

 

二. 为什么使用Service-Center

在微服务架构中,一个应用由一组职责单一化的服务组成,各个服务被动态的部署到不同的节点。面对这样一组服务,应该如何去管理服务之间的依赖关系呢?

 

服务注册中心的出现正是为了解决这样的问题,它提供的注册机制,允许服务提供者将自己的信息登记到中心;提供的发现机制,供服务消费者从中心查找服务提供者信息。 

服务注册中心优点:

1.解耦服务提供者与服务消费者,服务消费者不需要硬编码服务提供者地址。

2.服务动态发现及可伸缩能力,服务提供者实例的动态增减能通过注册中心动态推送到服务消费者端。

3.通过注册中心可以动态的监控服务运行质量及服务依赖,为服务提供服务治理能力。

 

三. 注册发现流程90f838ec1a4bf7b9c972fe847a6afef071b.jpg

如上图,Service-Center中服务发现流程大致有以下几个步骤:

  • 服务提供者向Service-Center注册服务信息

  • 服务提供者发送心跳,维持在Service-Center中的“UP”状态

  • 服务消费者向Service-Center注册服务信息

  • 服务消费者从Service-Center发现服务提供者信息

  • 服务消费者向服务提供者发送请求,并获取通讯结果

22cb1bb72cee17cf36ceb7acd9156b1faf7.jpg

•Service-Center注册发现接口基于RESTful标准实现,不受开发语言限制,实现对应接口可以参考官方API文档:

https://rawcdn.githack.com/ServiceComb/service-center/master/docs/api-docs.html

•Service-Center提供了简单注册与发现的Client,其中封装了API实现,可直接使用,具体可查看:

https://github.com/apache/servicecomb-service-center/tree/master/pkg/client/sc

 

四. 使用Service-Center

为了更好的理解流程,下面我们将通过“helloword”的示例,实现基于Service-Center的注册发现,并完成Consumer与Provider之间的通讯。


以下仅展示了主要流程代码,完整示例请参考:

https://github.com/ChinX/service-center-demo/tree/simple-demo

 

1.目录参考

创建名为“helloworld”的项目,以下为参考目录结构:

0a5434b73cc2031a765a3c51ffa47793704.jpg

 
2. 服务提供端实现

新建服务提供端配置文件: helloworld/rest/provider/conf/microservice.yaml

91dc4d2d92e5b09c8cf82a0cd3d4fee95ff.jpg

新建项目入口文件: helloworld/rest/provider/provider.go

01.在main函数中完成启动流程:

b9842dd7d1cfb6c9bb81b1cc73754c63bd7.jpg

02.启动服务提供端http监听

9f98d6c27e9241126367d867dc781b4e78a.jpg

03.向Service-Center注册自身服务,其中包含微服务创建、实例注册、心跳保活三个部分,具体代码如下:

068e824945b95139ecc95ec8e680c01c4b2.jpg02f62c45a953eab5a8dbf76bc3ee197a30e.jpg

 
3. 服务消费端实现a4d31d6626342d5c361a1040e02bd33538b.jpg

配置文件: helloworld/rest/provider/conf/microservice.yaml

9b2be8acb1787fa6f1a18ff5c068db7faa0.jpgfc00571e08dd670662a1036aae94292a4bc.jpg

入口文件: helloworld/rest/consumer/consumer.go

1.在main函数中完成启动流程:

7e4da45e1184424d857dd283003ce5ed0b8.jpg67965a59aedb5619d93adf9b91197db234b.jpg

2.从Service-Center服务发现服务提供端,涉及创建服务、服务发现接口:

254df4c1947a5e814994542adfd441a88d2.jpg

3.请求接口“/hello”完成与服务提供端的通讯

f258c8995c8728cacb137e05ad344e66056.jpg

 

 

4. 构建编译

以下基于 go 1.11+ 进行构建,请检测自身 go 环境。
进入 service-center-demo 目录:

c5e111dfbfc4db2bec719a39d18939a585a.jpg

 

五. 功能验证

 

1. 安装启动 Service-Center

从Service-Center官网获取二进制包:

http://servicecomb.apache.org/release/ ,解压并运行二进制

d27f05ef5345e3606d23119644669e43293.jpg

执行如上命令并得到对应的反馈信息,则说明安装部署成功。

 

2. 启动 provider

5934404cd67f868a962f9f70fcc9bb7a1fd.jpg

输出信息分析:

服务提供端启动并监听了本地8080端口

成功创建微服务服务,并打印了返回的serviceId

成功注册自身实例,并打印了返回的instanceId

服务提供端在启动30秒后,成功发送了一次心跳

a3aed10b58a60e5e5a78b27b75e2d29e73f.jpg

3. 启动 consumer

71a8a876e0de8cd39c4f41a19573f71a815.jpg

输出信息分析:

服务消费端成功创建微服务服务,并打印了返回的serviceId

服务消费端成功发现provider实例,并打印了返回的provider endpoints

服务提供端成功向服务提供端发送请求,并获得返回的信息“hello world”

此时查看provider端控制台,若出现“2019/02/17 21:13:02 request from consumer”类似字样的打印,则说明provider端接收到consumer端的请求,共同印证了通讯的成功。

 

 

  • 文末小结

本文向社区读者从用户角度阐述了ServiceCenter的基本使用方法,完成最简单的服务注册与发现。 

 

我们也非常欢迎爱好者们向社区提问和贡献代码:)

 

下篇将介绍ServiceCenter的架构与启动流程介绍。

 

如在阅读代码时有任何疑问想交流,欢迎扫码加入进微信群。

扫描二维码

添加微服务小助手

期待志同道合的朋友们加入

ServiceComb的大门为你们敞开~

用心做开源,不忘初衷

 

前期阅读

[学习微服务-第8天] 

ServiceComb内置负载均衡组件handler-loadbalance

[学习微服务第7天] 

ServiceComb+SpringCloud Ribbon源码解读

[学习微服务-第6天] 

负载均衡之ServiceComb + SpringCloud Ribbon

[学习微服务-第5天]

ServiceComb+Zipkin源码解读

[学习微服务-第4天]

ServiceComb+Zipkin

[学习微服务-第3天] 

ServiceComb内置高性能网关服务

[每天学习微服务-源码解读] 

ServiceComb+SpringCloud Zuul

[每天学习微服务-网关]

ServiceComb+SpringCloud Zuul

 

了解更多信息请访问: 

官方网站 ↓↓↓

http://servicecomb.apache.org/ 

Github代码仓库↓↓↓

https://github.com/apache?q=ServiceComb 

转载于:https://my.oschina.net/u/3823482/blog/3012217

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值