分享spring-security+jwt+oauth2(一)

105 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第22天,点击查看活动详情

image.png

微服务架构如何演变的?

传统单体架构 -> 分布式架构 -> SOA面向服务架构 -> 微服务架构

传统单体架构,也就是单点应用,早期所学习的SSM或者SSH整合项目,采用分层架构模式,数据库访问层dao、业务控制逻辑层service、控制层controller。将所有代码放到同一个项目中,部署在同一个tomcat中。

传统单体架构的优缺点:

优点:开发简单、运维简单

缺点:没有对业务逻辑实现拆分,所有代码写到同一个项目中,维护性十分差。只适合小团队或者个人开发,不适合团队模式协同开发。开发团队100人,会产生冲突问题。

如果系统中某个模块出现不可用,整个系统不可用。

应用场景:政府项目、小型管理系统、crm、oa

SOA架构模式的优缺点:

缺点:

1、采用SOAP协议实现通讯,xml传输非常重,效率低

2、服务化管理和治理设施不完善

3、依赖于中心服务发现机制

4、不适合于前后端分离架构

SOA架构与微服务架构有什么区别?

1、通讯协议

微服务架构基于SOA架构演变过来,继承SOA架构的优点,去除了SOA架构中的SOAP协议和ESB企业服务总线,改为http+Json形式传输我们的接口

ESB企业服务总线:多系统之间跨语言通讯,对数据协议实现转换,提供可靠的消息传输。

2、服务拆分的粒度

微服务,每个服务之间互不影响,独立的数据库、redis链接、MQ。实现独立部署,整个服务架构更加轻巧,轻量级。

3、迭代

微服务架构模式比SOA架构模式,更加适合互联网公司敏捷、搞笑、快速迭代版本。

微服务架构中会存在那些问题?

1、分布式事务的解决方案:rabbitmq、rocketmq事务消息、setata。最终一致性的问题

2、分布式任务调度平台:xxl-job、alibabaCloud Scheduler

3、分布式注册与发现:eureka、zookeeper、nacos

4、分布式日志采集系统:elk+kafaka

5、分布式服务追踪与调用链系统:Zipkin

6、分布式服务配置中心:阿波罗、nacos

非常重要的概念:独立部署、可配置、动态化

springcloud并不是一个rpc远程调用框架,而是一个微服务全家桶的解决方案的框架。

理念就是一条龙服务解决我们再微服务架构中遇到的问题。

公司有一定规模但不是特别有钱。(中小型的公司)

rpc远程调用的框架有哪些?

httpclient、dubbo、feign、grpc、基于netty手写rpc

springcloud第一代实际上都是用的Netflix核心组件

springcloud第二代实际上都是用的自己研发和alibaba的微服务解决框架整合

第一代:

springcloud config 分布式配置中心

euraka:服务治理

hystrix:服务保护

Ribbon:负载均衡

Feign:服务调用

Zuul:网关组件

第二代:

Nacos服务注册、配置中心

Sentinel服务保护

Seata分布式事务解决框架

OSS 阿里云存储(阿里云产品)

SchedulerX 分布式任务调度平台(建议xxl-job)

SMS 分布式短信平台

先定义接口对应规则名称,再定义用户对应规则名称

返回权限不足页面

先定义403转到/error/403接口,然后在该接口写具体返回内容。

RBAC权限模型(五张表结构)

1、权限表

id=101 接口:/addMember  tag= addMember

id=102 接口: /updateMember  tag= updateMember  

2、角色表

test-admin

test-add

3、角色权限表

test-admin ->权限id=1,2(权限tag=addMember,updateMember  )

test-add ->权限id=1(权限tag=addMember)

4、用户表

admin用户

add用户

5、用户角色表

admin用户->test-admin

add用户->test-add