注册重心和配置中心
这二者是一体的,目前主流的注册中心有以下几种
1.Eureka
其实在我学习的时候,Eureka就已经闭源了,而新项目spring也不再推荐这个,所以我只是知道有这么个东西,过去流行,但是实际并不是很了解
2.nacos
nacos是阿里旗下的,Spring Cloud Alibaba的子项目,nacos提供了比较好用的页面和操作,包括登录啊啥的。我使用过程中缺点有2,1.限定版本,限定spring boot版本之类,如果遇到漏洞,可能要等阿里先更新。2.当时遇到的一个小bug,项目和redis部署到了一起,nacos把redis识别成了一个注册服务
3.Consul
Consul是目前在推荐的一个,其实使用起来都每啥差别,配置其实差别也不太大。Consul提供的界面不太友好,也没有登录功能,缺少很多操作功能,比如T某个服务下线,但是api有提供,可能要二次开发
声明式rest客户端:OpenFeign
我其实不知道不用OpenFeign是怎么调用的,因为学习过程中多数都有这个,所以我就用了,使用方式大致如下
@FeignClient("kerwin-user")
public interface UserInfoClient {
/** 获取用户信息 */
@GetMapping("/user-info/info/{id}")
String getInfo(@PathVariable("id") Long id);
}
@FeignClient里一般是注册中心里,那个服务的名称,这个接口也不用写实现,直接调就好了。
网关
其实很抱歉,我学习的时候,就已经是gateway了。 网关其实是我很难理解的一个概念,我其实并不懂为什么要用java做这个。 使用网关一般大致是使用它如下功能。
1.路由
既然有网关,那后台服务一般都是要从网关走比较好,这里网关就起到了一个路由的功能,这个和前端那个路由看起来都查不太多
2.限流
网关是可以直接限流的,比较简单的是可以和redis配合使用令牌桶算法来限流,更复杂的可能还需要一些更专业的工具
3.熔断降级
熔断是指服务超时了可以快速失败,降级是指服务不可用的时候可以返回备用的响应参数。 熔断降级还涉及到了第三方的包,Hystrix、Resilience4j和Alibaba Sentinel。 我对这些了解不深就不多做描述,官方推荐的现在应该是Resilience4j,阿里的应该本地化工作做的好一些。
Oauth2
这个其实不太能算微服务的一部分,它主要是用来做登录的部分。比如,闲鱼使用淘宝登录,第三方网站使用微信扫码登录等等,一般都是用oauth2来实现。 它大致由客户端、授权服务器、资源服务器三者组成。比如我的网站使用微信登录,那么客户端是指我的网站,授权服务器是指微信扫码验证我的微信号的那台服务器,资源服务器是指扫码获取到微信id后,获取微信账号信息的那台服务器。 目前主流的包应该是Spring Authorization Server做授权服务器,oauth2-client做客户端,剩下的在spring security里面。
尾声
想不到的了,先写到这里,后续再补