[每天学习微服务-网关] ServiceComb+SpringCloud Zuul

点击蓝字关注这个靠谱的公众号

640?wx_fmt=gif


微服务架构模式中后端服务的实例数一般是动态的,于客户端而言很难发现动态改变的服务实例的访问地址信息,服务网关能对用户提供统一的入口。 


ServiceComb Java-Chassis 内置了网关服务EdgeService,开发者可以非常简单的搭建一个EdgeService服务。

具体可参考:https://docs.servicecomb.io/java-chassis/zh_CN/edge/by-servicecomb-sdk.html 


本文将介绍ServiceComb与SpringCloud的Zuul网关组件协同工作,以构建微服务应用。ServiceComb在自身的处理链HandlerTrain中已完成Zuul的对接,用户用极简单的方法配置后即可使微服务应用具备网关服务的能力。

为使读者更好地理解,本文将编写一个简单的Hello微服务,并启动2个实例来进行演示。


Hello微服务提供hello/{name}接口,只需从前端输入参数name就可从后端微服务获取到程序员百看不厌的Hello world结果。



微服务模式下的Hello应用模型

640?wx_fmt=jpeg 640?wx_fmt=gif



技术准备


640?wx_fmt=png

ServiceComb 作为后端微服务核心框架
ServiceCenter 作为服务发现与注册中心
SpringCloud Zuul 组件做服务网关


环境准备



640?wx_fmt=png

以下环境为Windows 64位系统


●安装git,详情可参考git安装教程

https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git


●安装JDK 1.8,详情可参考JDK安装教程。

https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html


●安装Maven 3.x,详情可参考Maven安装教程

https://maven.apache.org/install.html


ServiceCenter安装

640?wx_fmt=png

下载地址:

http://mirrors.hust.edu.cn/apache/servicecomb/servicecomb-service-center/1.1.0/


下载后解压如下▼

640?wx_fmt=png

在该目录下双击service-center.exe即可启动,命令窗口中出现如下信息基本代表ServiceCenter启动成功,从这个信息也可以得知ServiceCenter监听的是30100端口,等下配置文件要用到。

640?wx_fmt=png


问题点:有可能会有如下信息,这个一般是端口被占用,很可能你打开了两个ServiceCenter,都关闭后再打开就可以了。

↓↓↓

640?wx_fmt=png


示例

一、后端微服务 HelloService

01

添加依赖

新建maven项目HelloService,pom文件如下

640?wx_fmt=png

640?wx_fmt=png


02

配置


新建ServiceComb配置文件src/main/resources/microservice.yaml,内容如下

640?wx_fmt=png


03

项目入口

新建启动类HelloApplication.java,内容如下

640?wx_fmt=png


新建Controller类HelloController.java (这里我习惯SpringMvc的叫法,重点看注解)

640?wx_fmt=png


04

启动


到此,Hello微服务就写完了。这里要启动2个实例。

1.先打包,执行mvn clean package

2.在项目根目录下target目录下将lib目录和生成的jar包复制到另一个目录中 

640?wx_fmt=png


3.复制jar包,修改其中一个jar包微服务启动端口号为8888(通过WinRar解压缩软件打开jar包并打开microservice.yaml文件修改里面的rest端口号)

 

640?wx_fmt=png


4.在当前目录打开两个cmd命令窗口,分别执行命令java -jar HelloService-7777.jar和java -jar HelloService-8888.jar 。此时已经启动了2个微服务实例。


二、编写Zuul网关服务

01

 添加依赖

新建maven项目 zuulserver,pom文件如下

640?wx_fmt=png

640?wx_fmt=gif

02

配置文件


新建springboot配置文件src/main/resources/application.yaml,内容如下


640?wx_fmt=png

新建ServiceComb配置文件src/main/resources/microservice.yaml,内容如下


640?wx_fmt=png

640?wx_fmt=png


03

项目入口


新建启动类 ZuulApplication.java

640?wx_fmt=png


新建静态文件 src/main/resources/static/index.html,内容如下 (static目录是按springboot项目规范,属于应用静态文件根目录)

640?wx_fmt=png


04

启动


到此,网关服务器写完,如下在IDEA里面直接启动应用

640?wx_fmt=png


三. 演示效果

浏览器访问http://localhost:8080/ ,如下图。 在输入框中输入姓名,就可以在下面看到打招呼的信息

640?wx_fmt=png

连续点击几次打招呼按钮,可以在启动的2个Hello微服务实例的控制台中看到被调用的信息,如下图(由于这里使用的ServiceComb默认的负载均衡策略 轮询,可见到两个实例都均被调用,关于负载均衡,我们将在后续的文章中解读)。


此时用户并不需要关心具体哪个实例被调用了,访问的是哪个后端的实例地址,它只要访问网关就可以了:)

640?wx_fmt=png


总结

从以上的示例可以看出,通过 ServiceComb 结合SpringCloud Zuul 实现服务网关功能只需一些简单的配置。后续可以在网关服务上实现统一的鉴权,日志记录,和自定义过滤器等。


参考

[1] SpringCloud Zuul

https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html  

[2] ServiceComb

http://servicecomb.apache.org/cn/docs/quick-start/    


至此,第一章节就结束咯,下章节小蜜蜂将整理SpringCloud处理链中的Zuul集成的源码解读,干货满满,敬请期待~

640?wx_fmt=gif



640?wx_fmt=jpeg

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

ServiceComb的大门为你们敞开~

用心做开源,不忘初衷


相关文章阅读: 

【ServiceComb】扎实做微服务,认真做开源

了解更多信息请访问:

官方网站 http://servicecomb.apache.org/ 

Github代码仓库 https://github.com/apache?q=ServiceComb



记得动手给ServiceComb Github仓库点个“Star”哦~


640?wx_fmt=jpeg

点击下方“阅读原文”立刻去支持~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值