1. 你对微服务的理解
微服务是一种架构思想, 将应用程序拆分为小型、独立的服务,每个服务器负责处理一项特定业务功能, 服务之间松耦合、独立部署和运行。
可以使开发人员更专注于各个服务的开发和测试,降低了 系统的复杂性,提高了服务的可维护性和可扩展性,每个服务可以根据具体的业务需求选择合适的语言和工具,
提高系统的灵活性,服务之间通过轻量级的通信方式进行通信,每个服务都可以独立扩展和升级,提高了可靠性和可用性
总体来说,微服务使得程序更加灵活、可维护和可扩展,但是同时也使得需要的开发人员变多
2. openFeign 的使用
在pom 中添加相关依赖,启动类添加 @EnableFeignClients, 用于扫描FeignClient, 通过basePackage 指定FeignClient 的路径
在对应的接口中添加FeignClient 注解, value 为服务名, path 指定前缀路径, 在具体方法添加mvc 相关注解, 例如@GetMapping
2.1 openFeign 远程调用原理
在程序运行时, openFeign 会利用java的动态代理机制,基于定义的接口生成一个代理对象,这个代理对象会拦截对接口方法的调用, 并负责后续的远程调用逻辑
构建好请求后,会借助底层的http客户端, 通常是ribbot 将请求发送到远程服务的指定地址, ribbon 可以实现负载均衡,选择合适的服务实例来发送请求
接收到远程服务返回的响应后,openFeign 会按照约定的规则对响应进行解析,如果是json 格式,会转换为对应的java 对象,并最终解析后返回给调用方
3. nacos 和 sentinel 的使用
nacos 是阿里开源的服务注册与发现,动态配置的功能组件
nacos 宕机后, 5秒之内还是可以通过缓存获取到对应的下游服务的, 因为nacos 的心跳机制是5秒, 有5秒的缓存
nacos 可以通过框架集成, 通过@EnbaleDiscoveryClient 实现服务的自动注册
可以通过sdk 手动注册、可以通过命令行工具,手动注册,
当客户端向nacos 注册成功之后,会每5秒向其发送一次心跳,当nacos过了15秒依旧没有收到心跳,则会认为当前服务处于不健康状态,30秒每条收到心跳,则会认为当前服务已经宕机,就会将其剔除
同时nacos 也会进行自主侦测服务的健康情况,每20秒发送一次侦测,当侦测不到时,nacos 会将服务标记为不健康,但是不会进行剔除
3.1 nacos 自动刷新
nacos 的自动刷新主要是通过 @RefreshScope 注解实现的
当在类上添加 @RefreshScope 注解时, 当Nacos 中的注解发生改变后, 会通过发送 /actuator/refresh 端点的http 请求来触发配置的重新加载
3.2 nacos、eureka、zk注册中心的区别
nacos、eureka 和 zk 都是常用的注册中心,只是在功能上有一些不同
nacos 除了是注册中心,还提供了配置管理、服务发现等功能,其部署可以选择AP和CP,
eureka
标签:式微,服务,nacos,分布,注册,sentinel,窗口,侦测
From: https://www.cnblogs.com/antordragon/p/18353658