一个经过长时间断断续续了解的知识,突然发现用的不多我都要忘了,所以才写这一篇 来拾起来自己的记忆。
先来看一下我都是了解到了什么 源码供上 springCloud-demo 看一下20190728的日志吧 下面就不多说了 具体的模块概念去百度多了解。
目录
Eureka
这位是老大 他是一个对于分布式最底层的一个服务 没有他其它的模块就是一盘散沙。。。。。。so先了解这位
启动类
他实现了开启eureka服务 证明他是一个服务者
配置文件
- spring.application.name:服务名称
- server.port:服务端口号
- eureka.client.service-url.defaultZone:Eureka默认的服务地址空间信息配置
- eureka.client.fetch-registry:是否从其他Eureka注册中心同步服务列表(单节点无需配置启用).
- eureka.client.register-with-eureka:是否将自己作为服务注册到其他Eureka服务注册中心(单节点无需配置启用).
访问服务
Client
client顾名思义就是客户端了,他是起到一个当做业务逻辑的地方,具体就是看怎么分层了吧,举个例子:client我要是分的话就会再有两个module,dao和service因为client不只有一个,他可以是当做一个登录的client可以是官网或者管理后台,这样他们可以把用到的service方法抽出来做成自己的client服务,也可以本身做一个service抽出来dao层方法也是可以的,具体就是看自己怎么分了。这里没有提到controller,因为接下来会单独讲。
启动类
这里是启动了eureka客户端,就是server的小弟了,看配置文件就知道了。
配置文件
- spring.application.name:服务名称
- server.port:服务端口号
- eureka.client.service-url.defaultZone:Eureka默认的服务地址空间信息配置
服务地址空间信息配置是一样的 我的项目中有两个client项目服务名都是叫做client,因为我想实现访问接口可以访问任意一个client做到负载均衡的效果。
Feign
这个就很关键了,个人很喜欢这个,看一下对他的介绍,copy自网上(Feign是一个声明性的web服务客户端。它使编写web服务客户机变得更容易。使用Feign创建一个接口并注释它。它有可插入的注释支持,包括佯装注解和JAX-RS注释。Feign还支持可插拔的编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,也增加了Spring Web默认使用的httpmessageconverter。Spring Cloud集成了Ribbon和“发现”,在使用Feign时,它提供了一个负载均衡的http客户端。)总结重点就是它集成了ribbon和提供了一个负载均衡。
启动类
最主要的两个是绿色框里面的开启feign客户端和开启eureka客户端让server发现。
红色框的是开启监控观察和熔断在下面会讲
配置文件
- spring.application.name:服务名称
- server.port:服务端口号
- eureka.client.service-url.defaultZone:Eureka默认的服务地址空间信息配置
- feign.hystrix.enabled:true 开启hystrix的使用
- management.endpoints.web.exposure.include:'*' 配置启用所有的监控端点
使用
name:通过注册client可以访问到client项目 只要能在eureka服务页面能看到client项目,feign就能进行访问,这里是能找到这两个client项目的所以name填的就是要进行负载均衡访问的项目
通过feign访问client项目
访问一个地址他会有两次不同地方的响应 这就是两个client的作用。
fallback:如果两个client项目都宕机了那么他会执行HelloServiceImpl方法的 自己看源码Impl写的什么吧 这里就做效果图了
Ribbon
随意了解一下吧 ribbon也是实现了负载均衡的
启动类
第一个框是开启监控观察和熔断
第二个框是发现服务
在下面还有实现了一个RestTemplate
配置文件
- spring.application.name:服务名称
- server.port:服务端口号
- eureka.client.service-url.defaultZone:Eureka默认的服务地址空间信息配置
- management.endpoints.web.exposure.include:'*' 配置启用所有的监控端点
使用
也是使用了熔断,两个client都宕机了会执行serviceFailure()方法
通过restTemplate去访问client服务,host填写的就是项目注册的名字也是只要能在server上互相发现ribbon就能进行访问。
Turbine
这个就特别有意思了先认识一下它,查看单个微服务用的是Hystrix Dashboard,如果想看整个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine,监控数据也是很有用的,监测你服务的状态和可以知道需要优化的接口,具体的解释就需要你自己在去了解了。
启动类
启动Hystrix Dashboard和Turbine
配置文件
红色的就是基本的配置了 讲了好多次了就不说了 重要的是黄色框的appConfig这就是feign和ribbon项目的启动类为什么实现了那两个注解的用处
@EnableHystrixDashboard 启动检测表查看
@EnableCircuitBreaker 熔断
使用
要想使用这个Turbine 先访问http://localhost:port/hystrix ,红色框的内容就按照他的提示写
写好之后就是这样 点击第二个红色框你会发现一个新大陆
在你进来这个页面后 你需要通过feign或者ribbon项目访问接口,才会有这些数据。简单介绍几个监测信息想多了解监测信息自己百度吧!
Zuul
感觉多个feign服务调用起来会特别麻烦,还要记着端口ip什么的,所以又研究了个zuul(路由),它的用处挺大的比如可以通过接口携带参数user,传入相应的参数我就让他去访问对应的feign,理解起来就是把feign管理起来了。
启动类
启动zuul和注册服务 很好理解
配置文件
红色的还是基础的配置 黄色的就比较厉害了
zuul.routes:配置路由
- zuul.routes.ribbo.path: 自定义ribbon的访问路径
- zuul.routes.ribbo.serviceId: ribbon注册服务的名字
- zuul.routes.feign.path: 自定义feign的访问路径
- zuul.routes.feign.serviceId:feign注册服务的名字
使用
这里就讲一下我实现逻辑的方法 很粗糙
- 首先第一个框写的是 先获取到了访问当前内容的信息转换为HttpServletRequest
- 第二个框写的是获取参数验证信息 然后进行相应的处理
访问页面就是下面这样的 直接是通过路由去访问的,参数user必须是填写正确的才会去访问,我这是实验了两个负载均衡的项目,能做好多事的zuul就要自己拓展了。
ribbon服务效果
feign服务效果
下面图片是注册进去的所有服务,eureka页面上就是这些了。。。。。。(写帖子真的很需要耐心)