-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Welcome to the starcloud wiki!
-
Nacos,服务注册中心和配置中心,其中在Sentinel限流规则持久化规则推拉和链路追踪会涉及相关配置。
-
Gateway网关服务,提供请求转发和拦截过滤。
-
Spring Security Oauth2,用户认证&&鉴权。
-
Sentinel,服务降级&&限流和熔断。
-
Openfeign ,服务间的HTTP调用。
-
SkyWalking,服务链路追踪。
-
mysql ,redis
其中关于SpringCloudAlibaba中的版本依赖,请参考官网,务必一致,本项目采取的版本如下
-
对各个微服务模块的请求转发处理,目前只开启了动态路由,同时创建了一个基础的全局过滤器,来处理白名单和简单的请求转发。
-
在网关中可以和Sentinel整合后,可以对微服务提供网关规则的限流,或者分组限流。目前未配置限流。
-
网关层是微服务的入口,是可以做鉴权处理的。这里提供两种思路,一种直接在网关端认证通过后再分发到各个微服务,第二种是在各个微服务中
分别进行鉴权。项目中选择了第二种方案,因为这种控制粒度会更精确,再就是网关本身是采用了Reactor模型,涉及到WebFlux的认证鉴权,调试 起来有点头大,放弃了。
- 服务发现,服务注册以及统一的配置管理。
- 可以与Sentinel整合,做限流规则持久化推送等,目前只支持持久化规则从Nacos推送到Sentinel,Sentinel直接推送到Nacos,这个没有直接实现, 反正我是没有找到,需要改源码,一大堆的规则,改起来头都大,也不知道为啥官方不给直接提供一下,有兴趣的同学可以自己尝试一下。
- 可以直接与网关整合,根据网关限流规则进行一个整体服务的限流。
- 可以与Openfeign整合,在微服务调用中,对服务进行限流。官方文档给了比较详细的说明,可以查阅一下。
- 这个比较简单就是服务调用,采用代理的方式,可以在服务中无感知的调用其它微服务。
- 项目中对请求头中的Header中Authorization 进行了一个拦截处理,将token向调用方游服务传递。
- 提供一些请求压缩、也有一些降级处理等
- 主要提供了用户的认证鉴权,采用了JWT+RSA方式对token进行处理。
- JWT TokenStore中关于rsa部分,直接是将公钥和私钥放到了redis,也可以通过文件,网上这种教程资源还蛮多的。
- 配置了cluster: selector: ${SW_CLUSTER:nacos}
- storage: selector: ${SW_STORAGE:mysql}
- mysql配置了时区,要不然会启动报错,同时mysql驱动包要放在apache-skywalking-apm-bin-es7\oap-libs包下
- 启动成功会自动创建表,如果没有创建表成功,那就是出问题了,记得看日志排错。
- 关于分布式事务的处理可以放在最后,先注释掉activity-service和resource-service中seata的pom引入及yml配置文件
中的注释。因为我对这个分布式Seata的配置感到贼麻烦,感觉有点乱七八糟的,虽然最后也通了。我大体说一下我是怎么处理的。
先是那个undo_log,这个是Seata提供分布式事务数据回滚的必要的一个表,在各个数据库中要创建这个表,再就是Seata的配置,
除了解压的文件中的配置还有一些加压包里没有的配置,需要去网上找,我用的是1.3.0,我也不知道什么鬼,下载的包里面竟然
没有对应配置,最后是通过批处理命令来注册了各种配置到nacos。感觉Seata官网入门讲解比Nacos和Sentinel要混乱。
-
mysql,项目中用到的数据sql会在common-service中提供文件,需要自行创建库如下,nacos:这个官网提供建表sql,
user_auth:用户注册和认证的库,starcloud:业务库,目前就只有一张表。
-
启动redis中要首先把公钥和私钥生成,生成方式在oauth-service的Apptest中,这个代码要拷贝到别的项目中跑一下,
要不然项目没法运行,因为JWT的配置会依赖这里。
-
Nacos我改了用户密码,同时开启了持久规则到数据库,这个配置请参考一下官网,测试采用的是单机启动,各个服务
配置中心的文件也在common-service中
-
Sentinel也是单机启动
-
其余的好像没有啥了,目前只是大体流程跑通了,而且是没有 对分布式事务进行处理的,后续会加上,再就是对公共Bean的 的处理考虑改为starter引入
成功启动后的测试步骤 1.获取token 2.请求其他服务带着token