2022-SpringCloud-创新互联

1.注册中心Eureca和Nacos该如何选择? 2.Feign的原理

dubbo和feign 

创新互联建站是一家集网站建设,江宁企业网站建设,江宁品牌网站建设,网站定制,江宁网站建设报价,网络营销,网络优化,江宁网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

客户端调用服务端时,@Autowire注解在客户端service中注入了一个代理类(通过扫描@EnableFeignClients和@EnableFeignClient利用JDK动态代理生成的,并注册到了IOC容器),我们在service中调用服务端的eat()方法,其实是代理类在调用,在执行方法eat的时候其实在触发代理类中的invoke方法,invoke方法中就要新建一个Socket连接,服务端也要开一个Socket连接,请求头协议可以为http或者dubbo,请求体中包含了实现类名称、方法名称、方法参数,服务端接收到请求头+请求体之后,dubbo是通过反射,调用本地类的方法,拿到返回值通过Socket返回,而feign直接调用本地服务接口通过Socket返回了。对于feign,服务端会将对外提供的接口打成jar包,提供给客户端,j注册中心地址和端口++ar包中包含方法名和Url,如@ReqeastMapping(/service/eat),所以feign底层通过RestTemplater.getForObject方法就可以在invoke调用了。

总结:

1、使用JDK动态代理为接口创建代理对象

2、执行接口的方法时,调用代理对象的invoker方法

3、读取FeignClient的注解得到要调用的远程服务的接口

4、通过Ribbon负载均衡得到一个要调用的服务提供者

5、使用HttpURLConnection发起请求,得到响应

3.Skywalking

在天上跑,不侵入原有代码,任何服务都不需要该,任何依赖都不需要加。是通过agent这种模式,如在启动java项目的时候java -jar -agent 后面可以加个agent探针,

Skywalking启动之后,相当于从代理层Agent监听到class的运行,所有的请求都会走这个agent代理器,如Idea中Jrebel热部署,就是通过agent监听到代码的变化,然后重新启动的。

主要作用就是看哪个服务发生异常,请求时间较慢。

就较为轻量级,用于收集多少人请求,和请求时间。

简单带过即可,不是很重要

普罗米修斯是硬件监控。

日志格式:servername(服务名)+traceId(全局的)+spanId(服务的)

日志收集比率,开发时为1,上线时为0.1,因为链路追踪无需完整日志10%即可,完整日志已经保存在了logback文件。

4.SpringCloudConfig

1.Nacos是CP还是AP?

首先Nacos分为注册中心和配置中心,CP和AP是针对于注册中心的,配置中心底层是用的mysql进行存储的。

Nacos注册中心可以为CP也可以为AP,如果注册的节点为临时节点(zookeeper分布式锁),那么为CP,如果注册的是非临时节点,那么即为AP。我认为应该为AP,因为随着服务的增加,可能会面临频繁的上下线,而如果是CP的话,要等集群的注册中心数据达到一致后才会注册和移除,比较耗时,会影响到服务发现的效率和服务调用。如果是AP的话,不管集群中的节点数据是否一致,正常注册和下线服务,注册中心压力就会小一点,保证最终一致性即可。Zk保证的就是CP,但是如果大多数节点挂了的话,ZK也是不能提供服务的。

2.Nacos动态更新配置的原理

首先Nacos采用的是长轮询的方式,就是Nacos的Client端会向服务端发起查询配置更新的请求。

长轮询就是client创建连接,发起一次轮询请求,查询服务端是否有配置更新,这个连接会一直打开,直到服务端有配置更新和超时返回。

nacos客户端要获取服务端的配置更新,就要将本地缓存与服务器配置文件进行比较,一旦发现有更新,就会去更新本地缓存CacheData。在比较的过程中,由于配置项较多,为了减少网络通信数据量,将对比项进行了分片,每个分片大小为3000项,客户端将每个分片的key和对应Value的MD5值拼接为一个字符串发给服务端,服务端将存在更新的key返回给客户端,客户端拿到这些key就会调用服务端获取Value值,然后去更新本地缓存。

这个优化的核心目的,就是减少网络通信数据包的大小,把一次大数据包拆成多个小数据包的通信,虽然会增加次数,但是会提高性能。

加上长连接的方式,减少了轮询次数,实现了动态更新的功能。

3.Nacos心跳机制

首先启动Nacos服务, 当微服务1启动时,

第一步:会先向nacos建立连接,并发送一个心跳请求(5S一次),为了证明我们的网络和服务是OK的,nacos会将我们发送的心跳时间记录下来, 

第二步:微服务1向Nacos服务注册,

如果微服务1挂了,微服务2要想从nacos上发现微服务1的信息,怎么办呢?

nacos客户有个定时线程池,

不断的轮询,判断当前系统时间减去最新一次心跳时间,如果大于15S,nacos任务微服务1不健康,如果线程感知到时间大于30S的话,就认为服务下线了,会将微服务1下线干掉。

5.Sentinel

Hystrix是通过线程池中的方式来协调各种降级策略的,中断、创建新线程等,都比较重,越用越重,是通过计数器的算法,来计算还有多少线程可用。

sentinel是通过rateLimiter令牌桶的形式,来发放令牌,是个算法。

是以秒为单位的总数固定。

限流:

比如限制1S内只可以获取100个令牌桶,但是有个问题,第一秒请求时,所有的请求都是在900ms时候打进的,第二秒是是在100毫秒的时候打进的,那就相当于在200ms之内打入了200个请求,显然是不行的,会导致服务崩溃,内存溢出等。

处理方式为,滑动窗口,网卡发送数据包也是用了滑动窗口。

滑动窗口:将1s钟分为5段,每段为200毫秒,当请求打进的时候,计算前四个时间段和本身时间段内的请求是否超过了阈值100,如果超过了,则在当前时间段内不请求,下一个时间段再请求。

6.响应式Web

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

网站标题:2022-SpringCloud-创新互联
分享路径:https://www.cdcxhl.com/article2/cepooc.html

成都网站建设公司_创新互联,为您提供企业建站网站排名外贸网站建设网站收录网站维护域名注册

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设