概述
jbone定位123
学习交流
随着微服务的发展,出现了很多微服务架构的解决方案,Spring Cloud就是其中的典型代表。jbone是基于Spring Cloud搭建的微服务项目,包括服务注册与发现、服务监控、服务管理、服务网关、服务熔断等常见微服务组件。 除Spring Cloud以外,会根据业务特点选择合适的解决方案,如单点登录的CAS、安全框架Shiro等。具体参考《技术选型》。
jbone项目主要关注两个方面的技术交流:
- 功能实现:为技术选型相同的项目,提供实现参考。
- 技术探究:jbone在实现功能的同时,会针对选择的技术框架进行深入探究,使用的同时获得技术提升;出现问题能尽快的定位问题。知道How to use,更要知道How it works。(技术探究文章在末尾)
造轮子
造轮子的成本非常高,企业快速的业务发展,更想拿来即用。jbone在技术交流的过程中会沉淀出很多轮子,如服务治理、系统管理、内容管理、电商平台等解决方案。使中小企业花最少的成本建立自己的服务治理体系、电商平台、企业管理平台、支付平台等。
交流方式
QQ群:547104190
公众号:writebugs
作者QQ:417511458
作者微信:dreamming_now
系统要求
JDK11+
系统设计
jbone功能架构图
项目模块划分
- jbone-cas : 用户单点登录模块
- jbone-cas-client:客户端jar包,用于集成到需要CAS授权的系统
- jbone-cas-server:CAS服务端,单独部署,用于完成单点登录、票据管理等
- jbone-cas-manager:CAS服务管理,用于管理授权服务等
- jbone-sm : 服务管理模块
- jbone-sm-admin : 服务管理系统,包括服务监控、服务管理等
- jbone-sm-register : 服务注册中心,原则上所有服务都要注册进来
- jbone-sm-monitor : 服务监控系统,主要包含服务调用链分析和trace跟踪
- jbone-sys : 系统管理模块
- jbone-sys-admin : 系统管理后台
- jbone-sys-api : 系统服务对外接口定义
- jbone-sys-api-starter : 基于Spring Cloud Feign的调用实现
- jbone-sys-core : 系统管理核心
- jbone-sys-server : 系统管理服务
- jbone-tag :全平台标签系统
- jbone-cms :内容管理模块
- jbone-bpm : 工作流模块
- jbone-common : 共用模块
- jbone-configuration : 公共配置模块
- jbone-b2b2c : 多店铺电商平台模块
- jbone-ui : 以webjars形式管理前端静态资源,所有包含页面的工程需要依赖此模块。
非功能设计
可用性
HA >=99.99%(无任何单点问题,对单点故障零容忍)
性能设计
RTT < 1S(客户端的感受会受客户机器和网络的影响)
单机QPS:>100(系统容量根据机器的大小伸缩)
伸缩性设计
所有系统可以根据访问量,通过添加/减少机器的数量,实现系统伸缩
耦合性
所有系统均单独部署,除权限等基础数据外,全都相互隔离
技术选型
功能预览
Jbone CAS(认证中心)
实现方式
服务采用Apereo CAS作为登录认证中心,底层集成Shiro,通过Spring Cloud Feign声明式调用权限数据,完成用户授权。
定制登录认证页面
考虑到不同系统可能有显示不同风格的登录页面,后端支持配置系统登录皮肤(登录皮肤需要自己开发),也可使用默认视图。
默认视图加载系统的名字和描述信息,以下为登录服务管理系统的视图(登录不同系统会切换视图的展现):
Jbone SM Admin(服务管理中心)
实现方式
集成Spring Boot Admin 、Spring Cloud Hystrix,完成服务和JVM的监控
进入方式
浏览器输入:http://jbone-sm-admin.majunwei.com:100002/admin,跳转至CAS认证中心,输入jbone/jbone,即可进入
功能简介
系统监控墙
系统详情
JVM线程监控
调用链跟踪
trace跟踪
调用链
CAS系统管理
Jbone系统管理
系统管理
用户管理
角色管理
菜单管理
权限管理
jbone部署说明(默认HTTP)
下载代码
将代码clone下来并导入idea或eclipse;
创建数据库
注意要在application.properties里修改自己到数据库用户名和密码
jbone_sys
创建数据库jbone_sys,并通过doc/jbone_sys.sql创建表和初始化数据;
jbone_cas
创建数据库jbone_cas,并通过doc/jbone_cas.sql创建表和初始化数据;
jbone_zipkin(调用链使用)
创建数据库jbone_zipkin,并通过doc/jbone_zipkin.sql创建表和初始化数据;
启动redis
安装redis并在本地启动
安装并启动RabbitMq(调用链使用)
安装RabbitMq并在本地启动
配置域名
127.0.0.1 jbone-sm-register.majunwei.com
127.0.0.1 jbone-cas.majunwei.com
127.0.0.1 jbone-sys-server.majunwei.com
127.0.0.1 jbone-sm-admin.majunwei.com
127.0.0.1 jbone-sys-admin.majunwei.com
127.0.0.1 jbone-sm-monitor.majunwei.com
127.0.0.1 jbone-cas-manager.majunwei.com
127.0.0.1 jbone-tag-admin.majunwei.com
127.0.0.1 jbone-eb-portal.majunwei.com
127.0.0.1 jbone-eb-manager.majunwei.com
127.0.0.1 jbone-eb-consumer.majunwei.com
127.0.0.1 jbone-eb-seller.majunwei.com
127.0.0.1 jbone-bpm-admin.majunwei.com
127.0.0.1 jbone-bpm-server.majunwei.com
启动应用
依次启动:
-
jbone-sm-register(必启)
-
jbone-sys-server(必启)
-
jbone-cas-server(必启)
-
jbone-sys-admin(系统管理)
-
jbone-sm-admin (服务管理)
-
jbone-sm-monitor (服务调用链)
进入系统
系统名称 | 系统地址 |
---|---|
系统管理 | http://jbone-sys-admin.majunwei.com:20002/ |
服务管理 | http://jbone-sm-admin.majunwei.com:10002/ |
服务调用链 | http://jbone-sm-monitor.majunwei.com:10003/ |
默认用户名密码:jbone/jbone
https配置方式
技术探究
Spring Cloud篇
深入理解Spring Cloud - Spring Cloud Netflix Eureka
深入理解Eureka-Eureka Server节点复制机制
深入理解Eureka-Eureka Client获取注册信息机制
深入理解Eureka-Eureka Server自我保护机制
CAS 篇
重大更新记录
2019.1.9
1、Spring cloud由Dalston.SR3升级到Finchley.SR2
2、Spring boot 由1.5.8升级到2.0.6
3、CAS由5.2.0升级到6.0.0
4、JDK由1.8升级到11
遗留问题:
1、jbone-sm-monitor调用链和流量监控未完成;
2、jbone-cas-manager未完成