Nacos
原理:
-
服务实例在启动时注册到服务注册表,并在关闭时注销
-
服务消费者查询服务注册表,获得可用实例
-
服务注册中心需要调用服务实例的健康检查API来验证它是否能够处理请求
sentinel
redis
概念:
Redis是一个key-value存储系统,是一个分布式缓存数据库。
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份。
优点:
性能极高、丰富的数据类型、原子性、丰富的特性
数据类型:
1.string是redis最基本的类型,可以理解成与memcached一模一样的类型,一个key对应一个value。
2.Hash是一个键值(key-value)的集合
3.list列表是简单的字符串列表,按照插入顺序排序
4.set是string类型的无序集合
5.zset和set一样是string类型元素的集合,且不允许重复的元素
redis是单线程
为什么redis是单线程,效率还高?
1.纯内存操作
2.单线程操作,避免了频繁的上下文切换
3.采用了非阻塞I/O多路复用机制
Java中操作redis,使用jedis
单点登录流程
什么是单点登录?单点登录全称Single Sign On(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分
- 用户访问系统的受保护资源,系统发现用户未登录,跳转至认证中心,并将自己的地址作为参数
- sso认证中心发现用户未登录,将用户引导至登录页面
- 用户输入用户名密码提交登录申请
- sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌
- sso认证中心带着令牌跳转最初的请求地址
- 系统拿到令牌,去sso认证中心校验令牌是否有效
- sso认证中心校验令牌,返回有效,注册系统1
- 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
- 用户访问系统2的受保护资源
- 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
- sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
- 系统2拿到令牌,去sso认证中心校验令牌是否有效
- sso认证中心校验令牌,返回有效,注册系统2
- 系统2使用该令牌创建与用户的局部会话,返回受保护资源
- sso认证中心一直监听全局会话的状态,一旦全局会话销毁,监听器将通知所有注册系统执行注销操作
- 用户向系统1发起注销请求
- 系统1根据用户与系统1建立的会话id拿到令牌,向sso认证中心发起注销请求
- sso认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址
- sso认证中心向所有注册系统发起注销请求
- 各注册系统接收sso认证中心的注销请求,销毁局部会话
- sso认证中心引导用户至登录页面