如下图所示,我们是springboot+dubbo+zookeeper
的项目:
关于上边的项目,master
项目即是我们的主项目,含有登录页,suiteone
、suitetwo
即是我们的从项目。facade
项目是我们分布式项目中相当于公共引用项目
一样,而userservice
项目作为我们的服务接口发布者。我们项目的实际架构我也贴了一张简单的图,方便大家理解:
实际上就是我们把我们常见的serviceImp
以及dao和数据库连接等等
这一部分抽到了zookeeper
中右边service
项目里了,这里我是测试项目,就没有写suiteoneservice
、suitetwoservice
,仅仅写了userservice
项目。
关于springboot+dubbo+zookeeper
项目的实现可以参考我的另一篇文章
spring boot配置dubbo(XML)
按照上面的图,大概了解到,redis
是与master
、suiteone
、suitetwo
连接的。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-all</artifactId>
<version>1.3.2</version>
</dependency>
注意,项目里有个gson包,如果下载不下来可以引用下边的这个
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.0</version>
</dependency>
master
项目配置如下:
shiro.loginUrl=/login
shiro.jessionid=sessionId
spring.redis.host=192.168.1.160
spring.redis.port=6379
spring.redis.password=znxd
suite
项目配置如下:
#从项目在未登录的情况下访问的登录页,默认为主项目master的登录页
shiro.loginUrl=https://localhost:30000/login
#从项目的sessionId,名字必须与主项目的名字一致
shiro.jessionid=sessionId
#以下为redis的配置
spring.redis.host=192.168.1.160
spring.redis.port=6379
spring.redis.password=znxd
(3) 主从项目都放上相同的shiro
相关类,如下:
master
项目的配置:
suite
项目的配置:
其实关于从项目的配置不需要跟主项目的相同,在本项目中我已经能去掉的都去掉了。
因为我的数据库是用的sqlserver
你需要下载下来sql
文件,把它们改成合适的sql
导入到数据库中。
然后修改userservice
中的数据库连接配置。
启动顺序,先启动userservice项目
,再启动master项目
,最后启动suite项目
。
注意,如果你已经有相关的用户那些类,你完全没必要去用我的,你只需要修改master
项目中的userRealm
和RetryLimitHashedCredentialsMatcher
类中关于UserService
和SysFuncService
接口的调用。
如果你想添加额外的从项目,你只需要仿照suiteone
或者suitetwo
写的关于shiro
配置即可。
我们是需要zookeeper
,如果你没有使用这些,你还可以把我的项目,master
项目与userservice
项目合并,并且在从项目中引用下User
类,因为共享的Session
在反序列化时,需要User
类 。