2022年7月19日
spring cloud一些小的点
1.Ribbon是客户端的负载均衡,使用discoveryClient从注册中心读取目标服务信息,对同一接口请求进行计数,使用%取余算法获取目标服务集群索引,返回获取到的目标服务信息。
2.漏桶算法,是以一个恒定的流速往外流动,水多了就直接溢出(熔断)。令牌桶,已一定的速率放入令牌,可以和漏桶达到相同的效果,同时在流量突发,且是正常可以响应的情况,可以大量放入令牌,应对突击情况。
3.eruka的缺点,需要1-3个心跳周期,才能感知到服务挂掉的情况,此时需要hystrix来搭配使用,保障能得到降级的响应。
4.Ribbon默认应该是线性轮训,也有其他的规则,比如随机,最大可用,权重等
5.Spring Event 机制,可以用来接耦,一些简单的业务不引入mq也能实现。
OrderProductEvent extends ApplicationEvent 定义事件 OrderProductListener implements ApplicationListener<OrderProductEvent> 定义监听 public void onApplicationEvent(OrderProductEvent event) { String orderId = event.getOrderId(); long start = System.currentTimeMillis(); Thread.sleep(2000); long end = System.currentTimeMillis(); log.info("{}:校验订单商品价格耗时:({})毫秒", orderId, (end - start)); } /** 注入ApplicationContext用来发布事件 */ private final ApplicationContext applicationContext; applicationContext.publishEvent(new OrderProductEvent(this, orderId)); 发布事件