• SpringCloud相关技术总结


    Eureka总结

    Eureka是服务注册中心,将服务都到一个注册表内,让其他服务进行访问此注册中心。

    有几个需要记住:
    Eureka属于AP,不保证数据一致性。
    1、服务注册在第一次发送心跳的时候提交。
    2、每个client需要每30秒发送一次心跳来续租,90s没有响应,那么会剔除掉。
    3、自我保护机制,默认85%。防止到了90s后没有响应,但是由于网络抖动造成服务不可用情况。
    4、传播到其他eureka集群可能需要2分钟。
    5、Server端将定期将没有心跳的服务剔除,这个是用timer。一般开启自我保护则不开启此配置。
    6、可以向注册中心发送delete请求,主动删除。
    7、控制服务的上线,将自己的健康状态传给server。Health是UP或者DOWM传给server。

    Ribbon总结

    Ribbon是客户端负载均衡技术。

    1、客户端负载均衡是地址列表在客户端里,而服务端负载均衡则是在服务端中。
    2、Ribbon有多种负载均衡策略,默认区域权衡策略,其他策略比如轮询、随机等策略。可以针对不同服务定不同策略。
    3、Feign默认支持Ribbon;Ribbon的重试机制和Feign的重试机制有冲突,所以源码中默认关闭Feign的重试机制,使用Ribbon的重试机制。
    4、设置超时的时候,需要分两部分设置,一个为建立连接是否超时,一个是业务线程耗时。并且重试是每隔6s进行重试。

    OpenFeign与RestTemplate总结

    都是服务调用的方法。

    1、RestTemplate用getForObject方式获取,通常请求端需要编写一个映射路径,让服务端进行准备资源。
    2、网页先给请求,请求打到consumer方的controller,然后转给consumerapi,consumerapi里也有请求资源路径,这个资源路径是对着provider方的资源路径。consumer继承给定的api,provider实现api。这样provider有啥,那么consumer就能用啥了。

    Hystrix总结

    服务调用的容错机制,协调两个服务。主要做了服务降级、熔断、限流。
    1、熔断:尝试向其他服务器发送请求前,请求失败的阈值达到一定阈值时(5秒内20次调用失败),立即切断对当前服务的所有请求。直接抛异常。这里有个半请求概念,达到阈值后,可以随机发送一次请求。
    2、降级:这里的降级就是在请求一个服务器后,没请求到,请求其他服务器,还是不行,那么返回一种比较友好的界面,比如服务器正忙,一般用兜底数据处理。
    3、代码中,run相当于try,getfallback相当于catch。
    4、限流:consumer不给一个用户无限开线程。可以用隔离方案,一旦一个线程池满了,请求立即被拒绝,为了快速失败。
    5、默认情况下hystrix使用线程池控制请求隔离,线程池隔离技术,是用 Hystrix 自己的线程去执行调用;而信号量隔离技术,是直接让 tomcat 线程去调用依赖服务。信号量隔离,只是一道关卡,信号量有多少,就允许多少个 tomcat 线程通过它,然后去执行。
    6、Hystrix针对具体的服务,线程池里给他分配线程数。(线程隔离)不至于给consumer拖死。一个服务的线程池挂了,不会影响其他服务的线程池。
    7、信号量隔离利用了tomcat里的worker线程池,是一种阻塞式的,不需要内部线程池。线程隔离是自己需要设置一些线程池,优点是有失败策略,可以将异常线程池隔离,并且异步请求。默认是线程池隔离。

    Zuul总结

    所有的外部请求都会先经过微服务网关。

    链路追踪总结

    如果能跟踪每个请求,中间请求经过哪些微服务,请求耗时,网络延迟,业务逻辑耗时等。我们就能更好地分析系统瓶颈、解决系统问题。因此链路跟踪很重要。zipkin与sleuth

    健康检查总结

    所有需要监控的server都需要加入admin客户端,可以发送qq邮箱通知或者钉钉通知。

    配置中心总结

    配置写在配置文件中,没有什么大问题。如果要切换环境 可以切换不同的profile(2种方式),但在微服务中,配置文件过多。
    手动配置热更新,用actuator/reflush,发送post请求。

  • 相关阅读:
    idea中误删.iml和.idea文件,如何处理
    window office
    P1220 关路灯 ( 区间dp
    Windows 11再次迎来更新,支持1000多款Android应用程序
    设计数据密集型应用的主要关注点
    SpringBoot整合WebSocket【代码】
    MyBatis入门
    vulnhub靶场之MOMENTUM: 1
    在Docker中运行PostgreSQL数据库
    2022亚太数学杯数学建模竞赛C题(思路、程序......)
  • 原文地址:https://blog.csdn.net/qq_40223516/article/details/126440961