微服务没有网关,会有下面的问题:
网关是介于客户端(外部调用方比如app,h5)和微服务的中间层。
Zuul是Netflix开源的微服务网关,核心是一系列过滤器。这些过滤器可以完成以下功能。
网关和服务的关系:演员和剧场检票人员的关系。
zuul默认集成了:ribbon和hystrix。
把网关搭起来,本地的话就可以localhost/user-consumer/xxx localhost/user-provider/xxx访问了
provider有集群,但是consumer没有,consumer访问是springmvc接收请求,那每一个consumer都记一个ip吗?显然不是,consumer集群前面再来一层网关。
因为网关zuul默认集成了:ribbon和hystrix。而且注册了eureka,则可以把eureka中注册的consumer的服务列表拉取出来,当用户访问的时候就可以选一个 。网关会将服务名转换成具体服务的ip和端口,实际进行访问
consumer服务名/consumer里的资源(方法名):
例如 localhost/user-consumer11/demo
这个功能叫路由,网关的第一个功能 路由
zuul 网关 没有 kong的性能好
网关单点怎么办?前面再加一层 负载均衡 Nginx或者LVS
基于隧道模式的业务网关 zuul nginx kong,想要提高zuul的性能的话,设置成无状态,优化线程为异步,zuul是跑在tomcat上,基于servlet和filter的。
所有的拒绝策略尽可能的前置
链路追踪 sleuth + zipkin 在consumer和provider都需要配置。
如果能跟踪每个请求,中间请求经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等。我们就能更好地分析系统瓶颈、解决系统问题。因此链路跟踪很重要。
自己思考解决方案:在调用前后加时间戳。捕获异常。
链路追踪目的:解决错综复杂的服务调用中链路的查看。排查慢服务。
市面上链路追踪产品,大部分基于google的Dapper论文。
zipkin,twitter开源的。是严格按照谷歌的Dapper论文来的。
pinpoint 韩国的 Naver公司的。
Cat 美团点评的
EagleEye 淘宝的
Sleuth是Spring cloud的分布式跟踪解决方案。
其实数据结构是一颗树,从root span 开始。
<!-- 引入sleuth依赖 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
测试点:
[api-driver,1a409c98e7a3cdbf,1a409c98e7a3cdbf,true]
[服务名称,traceId(一条请求调用链中 唯一ID),spanID(基本的工作单元,获取数据等),是否让zipkin收集和展示此信息]
看下游
[service-sms,1a409c98e7a3cdbf,b3d93470b5cf8434,true]
traceId, 是一样的。
服务名必须得写。
上面拍错看日志,很原始。刀耕火种,加入利器 zipkin。
zipkin是twitter开源的分布式跟踪系统。
原理收集系统的时序数据,从而追踪微服务架构中系统延时等问题。还有一个友好的界面。
由4个部分组成:
Collector、Storage、Restful API、Web UI组成
采集器,存储器,接口,UI。
原理:
sleuth收集跟踪信息通过http请求发送给zipkin server,zipkin将跟踪信息存储,以及提供RESTful API接口,zipkin ui通过调用api进行数据展示。
默认内存存储,可以用mysql,ES等存储。
操作步骤:
<!-- zipkin -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
spring:
#zipkin
zipkin:
base-url: http://localhost:9411/
#采样比例1
sleuth:
sampler:
rate: 1
jar包下载:curl -sSL https://zipkin.io/quickstart.sh | bash -s
我放到了 目录:C:\github\online-taxi-demo 下面。
java -jar zipkin.jar
或者docker:
docker run -d -p 9411:9411 openzipkin/zipkin
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!