同步操作将从 dromara/lamp-cloud 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
基于SpringCloud(Finchley.M2)
+ SpringBoot(2.0.0.M2)
的微服务 SaaS 开发平台,
具有统一授权、认证后台管理系统,其中包含具备用户管理、配置中心、存储系统、资源权限管理、
网关API、OpenAPI管理、日志分析、任务和通知等多个模块,
支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,非常适合学习使用。
核心技术采用Eureka、Fegin、Ribbon、Zuul、Hystrix、JWT Token、Mybatis、SpringBoot、Redis、
RibbitMQ、FastDFS等主要框架和中间件。
希望能努力打造一套从 前端模板
- 基础框架
- 分布式微服务架构
- 开源项目
- 持续集成
-
自动化部署
- 系统监测
的解决方案。
该项目为本人在学习过程中通过一些其他的开源项目,资料,文章进行整合的一个项目。 目前国内的一些资料讲解和使用的SpringCloud版本都比较低,自己在基于现有的开源项目和资料学习的同时, 一边以自己的一些想法改造搭建一个相对较新版本的项目。
后期会引入Docker
(慢慢学,还没到这一步)
[github] https://github.com/zuihou/zuihou-admin-cloud [gitee] https://gitee.com/zuihou111/zuihou-admin-cloud
基于Eureka来实现的服务注册与调用,在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。
通过JWT的方式来加强服务之间调度的权限验证,保证内部服务的安全性。
通过JWT的方式来加强对外暴露接口调度的权限验证,保证api接口的安全性。
将服务保留的rest进行代理和网关控制,除了平常经常使用的node.js、nginx外,Spring Cloud系列的zuul和rebbion,可以帮我们进行正常的网关管控和负载均衡。其中扩展和借鉴国外项目的扩展基于JWT的Zuul限流插件,方面进行限流。
因为采取了服务的分布,为了避免服务之间的调用“雪崩”,采用了Hystrix的作为熔断器,避免了服务之间的“雪崩”。
利用Spring Boot Admin 来监控各个独立Service的运行状态;利用turbine来实时查看接口的运行状态和调用频率;通过Zipkin来查看各个服务之间的调用链等。
本代码采用 Intellij IDEA(2018.1 EAP) 来编写,但源码与具体的 IDE 无关。
项目
-业务
,如zuihou-admin
子系统
_表
,如b_role
1,前端哥哥
2,后端哥哥
3,土豪哥哥(求赞助服务器)
4,小姐姐
lombok插件
├─zuihou-admin-cloud
│ │
│ ├─zuihou-backend---------------------------后端服务
│ | ├─zuihou-admin--------------------------后端管理服务
│ | | ├─zuihou-admin-api------------------后端管理服务api接口
│ | | ├─zuihou-admin-repository------------后端管理业务/持久层
│ | | ├─zuihou-admin-server----------------后端管理服务
│ | |─zuihou-base---------------------------基础模块服务
│ | | ├─zuihou-base-api-------------------基础模块接口/dto
│ | | ├─zuihou-base-repository-------------基础模块业务/持久层
│ | | ├─zuihou-base-server-----------------基础模块服务
│ | ├─zuihou-file---------------------------文件模块服务
│ | ├─zuihou-mail---------------------------邮件模块服务
│ | ├─zuihou-sms----------------------------短信模块服务
│ | ├─zuihou-auth---------------------------鉴权中心
│ | | |─zuihou-auth-client-----------------鉴权中心客户端
│ | | |─zuihou-auth-common-----------------鉴权中心公共包
│ | | |─zuihou-auth-server-----------------鉴权中心服务
│ | ├─zuihou-gateway------------------------统一网关负载中心
│ | | |─zuihou-gateway-ratelimit-----------网关限流插件
│ | | |─zuihou-gateway-server--------------项目网关服务
│ │
│ ├─zuihou-common----------------------------公共模块(这里一直没想好怎么调整,有想法的朋友可以给我留言)
│ | ├─zuihou-commons------------------------项目公共包
│ | ├─zuihou-core---------------------------项目核心包
│ │
│ ├─zuihou-frontend--------------------------项目前端
│ | ├─zuihou-center-web----------------------项目前端
│ | ├─zuihou-sso-client---------------------项目单点登录client
│ │
│ ├─zuihou-config-repo-----------------------远程配置文件仓库
│ │
│ ├─zuihou-service---------------------------服务模块
│ | ├─zuihou-config-------------------------配置中心
│ | ├─zuihou-eureka-------------------------注册中心
│ | ├─zuihou-monitor------------------------spring-boot-admin监控中心
│ | ├─zuihou-zipkin-------------------------zipkin分布式链路跟踪
│ │
│ │-...
接下来分别介绍开发环境(dev)和正式环境(prod1,prod2)的运行步骤. 生产环境所有服务单例运行,生产环境所有服务运行2个实例(除了zuihou-monitor,zuihou-zipkin.这2个监控服务)
127.0.0.1 casserver.zuihou.com
127.0.0.1 eureka.zuihou.com
127.0.0.1 config.zuihou.com
127.0.0.1 admin.zuihou.com
127.0.0.1 base.zuihou.com
127.0.0.1 gateway.zuihou.com
127.0.0.1 auth.zuihou.com
127.0.0.1 monitor.zuihou.com
127.0.0.1 zipkin.zuihou.com
127.0.0.1 zuihou.rabbitmq.host
127.0.0.1 zuihou.mysql.host
127.0.0.1 zuihou.redis.host
2, 依次运行数据库脚本:
3, 通过以下方法,进行密码加密:
public static void main(String[] args) throws Exception {
System.out.println(ConfigTools.encrypt("your mysql password"));
}
4, 修改配置数据库/redis/rabbitMQ配置:
(画重点)修改配置需要各位自己在github或者gitee上创建自己的仓库,但目录结构需要和zuihou-config-repo
的结构一致,
然后在修改zuihou-config
服务application.yml
中的spring.cloud.config.server.git.uri:
项。
理论上只需根据自己的需求修改端口、帐号、密码。 ip 尽量采用虚拟域名,统一修改hosts文件。
zuihou-config-repo/zuihou-backend/zuihou-admin/application-dev.yml
zuihou-config-repo/zuihou-backend/zuihou-gateway-server/application-dev.yml
zuihou-config-repo/zuihou-backend/zuihou-auth-server/application-dev.yml
zuihou-config-repo/zuihou-backend/zuihou-base/application-dev.yml # 待开发
zuihou-config-repo/zuihou-backend/zuihou-file/application-dev.yml # 待开发
zuihou-config-repo/zuihou-backend/zuihou-mail/application-dev.yml # 待开发
zuihou-config-repo/zuihou-backend/zuihou-sms/application-dev.yml # 待开发
zuihou-config-repo/zuihou-service/zuihou-zipkin/application-dev.yml
zuihou-config-repo/zuihou-service/zuihou-monitor/application-dev.yml
5, 在IDE中启动:
5.1, 在IDE中启动:编译代码,修改启动参数:
5.2,按顺序
运行main类:
6, 命令行启动:
127.0.0.1 casserver.zuihou.com
127.0.0.1 eureka1.zuihou.com eureka2.zuihou.com
127.0.0.1 config1.zuihou.com config2.zuihou.com
127.0.0.1 admin1.zuihou.com admin2.zuihou.com
127.0.0.1 base1.zuihou.com base2.zuihou.com
127.0.0.1 gateway1.zuihou.com gateway2.zuihou.com
127.0.0.1 auth1.zuihou.com auth2.zuihou.com
127.0.0.1 monitor1.zuihou.com monitor2.zuihou.com
127.0.0.1 zipkin1.zuihou.com zipkin2.zuihou.com
127.0.0.1 zuihou.rabbitmq.host
127.0.0.1 zuihou.mysql.host
127.0.0.1 zuihou.redis.host
2, 依次运行数据库脚本:
3, 通过以下方法,进行密码加密:
public static void main(String[] args) throws Exception {
System.out.println(ConfigTools.encrypt("your mysql password"));
}
4, 修改配置数据库/redis/rabbitMQ配置:
理论上只需根据自己的需求修改端口、帐号、密码。 ip 尽量采用虚拟域名,统一修改hosts文件。
prod1 代表实例1 prod2 代表实例2 , 实例1和实例2 的启动端口根据自己的情况进行修改,但最好跟我的保持一致
zuihou-config-repo/zuihou-backend/zuihou-admin/application-prod*.yml
zuihou-config-repo/zuihou-backend/zuihou-gateway-server/application-prod*.yml
zuihou-config-repo/zuihou-backend/zuihou-auth-server/application-prod*.yml
zuihou-config-repo/zuihou-backend/zuihou-base/application-prod*.yml # 待开发
zuihou-config-repo/zuihou-backend/zuihou-file/application-prod*.yml # 待开发
zuihou-config-repo/zuihou-backend/zuihou-mail/application-prod*.yml # 待开发
zuihou-config-repo/zuihou-backend/zuihou-sms/application-prod*.yml # 待开发
zuihou-config-repo/zuihou-service/zuihou-zipkin/application-prod*.yml
zuihou-config-repo/zuihou-service/zuihou-monitor/application-prod*.yml
5, 在IDE中启动:
5.1, 在IDE中启动:编译代码,修改启动参数:
5.2,按顺序
运行main类:
6, 命令行启动:
服务 | 端口号 |
---|---|
zuihou-eureka | 8500 |
zuihou-config | 8505 |
zuihou-zipkin | 8510 |
zuihou-monitor | 8515,8516 |
- | - |
zuihou-auth | 9775 |
zuihou-gateway | 9770 |
zuihou-admin | 9765 |
zuihou-base | 9760 |
zuihou-file | 9755 |
zuihou-sms | 9750 |
zuihou-email | 9745 |
服务 | 端口号1 | 端口号2 |
---|---|---|
zuihou-eureka | 8501 | 8502 |
zuihou-config | 8506 | 8507 |
zuihou-zipkin | 8511 | 8512 |
zuihou-monitor | 8515,8516 | 8517,8518 |
- | - | - |
zuihou-auth | 9776 | 9777 |
zuihou-gateway | 9771 | 9772 |
zuihou-admin | 9766 | 9767 |
zuihou-base | 9761 | 9762 |
zuihou-file | 9756 | 9757 |
zuihou-sms | 9751 | 9752 |
zuihou-email | 9746 | 9747 |
本项目正在开发阶段,由于码主白天要上班,只有晚上、周末能挤点时间来敲敲代码,所以进度可能比较慢,文档、注释也不齐全。
各位大侠就将就着看,但随着时间的推移。文档,注释,启动说明等码主我一定会补全的(对自己负责,也是对大家负责)。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。