Giter Site home page Giter Site logo

lovelinna / jbone Goto Github PK

View Code? Open in Web Editor NEW

This project forked from 417511458/jbone

0.0 0.0 0.0 29.8 MB

jbone基于Spring Cloud框架开发,旨在为中小企业提供稳定的微服务解决方案,为开发人员提供基础开发骨架,jbone包含微服务中所有常用组件,例如注册中心、服务管理、服务监控、JVM监控、内存分析、调用链跟踪、API网关等等。业务功能包括系统权限的统一管理、单点登录、CMS、电商平台、工作流平台、支付平台等等。

License: Apache License 2.0

Java 88.20% Groovy 0.04% Batchfile 0.07% CSS 4.34% Vue 7.35%

jbone's Introduction

概述

jbone定位

学习交流

随着微服务的发展,出现了很多微服务架构的解决方案,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功能架构图

项目模块划分

  • 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-zipkinserver : 基于zipkin的调用链监控系统
  • 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(系统容量根据机器的大小伸缩)

伸缩性设计

所有系统可以根据访问量,通过添加/减少机器的数量,实现系统伸缩

耦合性

所有系统均单独部署,除权限等基础数据外,全都相互隔离

技术选型

技术 简介 网址
Spring Boot 基础构建框架,用于快速整合各资源 https://projects.spring.io/spring-boot/
Spring Framework 底层容器 https://projects.spring.io/spring-framework/
Spring Cloud 微服务框架 https://projects.spring.io/spring-cloud/
Spring Cloud Eureka 服务注册中心 https://projects.spring.io/spring-cloud/
Spring Cloud Zuul 服务网关 https://projects.spring.io/spring-cloud/
Spring Cloud Hystrix 服务容错框架 https://projects.spring.io/spring-cloud/
Spring Cloud Feign 微服务声明式调用框架 https://projects.spring.io/spring-cloud/
Spring Boot Admin 服务管理中心 https://github.com/codecentric/spring-boot-admin
Spring Data Jpa 持久化框架 https://projects.spring.io/spring-data-jpa/
Spring Data Redis 缓存框架 https://projects.spring.io/spring-data-redis/
Apache Shiro 安全框架 http://shiro.apache.org/
thymeleaf-extras-shiro thymeleaf的shiro标签 https://github.com/theborakompanioni/thymeleaf-extras-shiro
Apereo CAS 单点登陆框架 https://github.com/apereo/cas
Spring Validator 后端验证框架 https://projects.spring.io/spring-framework/
Hibernate Validator Hibernate验证框架 http://hibernate.org/
lombok 一个通过注解自动生成get/set方法的类库 https://projectlombok.org/
webjars 以jars的形式管理前端静态资源 http://www.webjars.org/
Thymeleaf 模板引擎 http://www.thymeleaf.org/
Maven 项目构建管理 http://maven.apache.org/
Redis 分布式缓存数据库 https://redis.io/
Mysql 对象关系数据库 https://www.mysql.com/

功能预览

Jbone CAS(认证中心)

实现方式

服务采用Apereo CAS作为登录认证中心,底层集成Shiro,通过Spring Cloud Feign声明式调用权限数据,完成用户授权。

定制登录认证页面

考虑到不同系统可能有显示不同风格的登录页面,后端支持配置系统登录皮肤(登录皮肤需要自己开发),也可使用默认视图。

默认视图加载系统的名字和描述信息,以下为登录服务管理系统的视图(登录不同系统会切换视图的展现): CAS登录

Jbone SM Admin(服务管理中心)

实现方式

集成Spring Boot Admin 、Spring Cloud Hystrix,完成服务和JVM的监控

进入方式

浏览器输入:http://jbone-sm-admin.majunwei.com:100002/admin,跳转至CAS认证中心,输入jbone/jbone,即可进入

功能简介

系统监控墙

系统监控墙

系统详情

系统详情

JVM线程监控

JVM线程监控

Hystrix流量和熔断监控 Hystrix流量和熔断监控

调用链跟踪

trace跟踪

trace

CAS系统管理

CAS系统管理

Jbone系统管理

系统管理

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-zipkinserver.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

启动应用

依次启动:

  1. jbone-sm-register(必启)

  2. jbone-sys-server(必启)

  3. jbone-cas-server(必启)

  4. jbone-sys-admin(系统管理)

  5. jbone-sm-admin (服务管理)

  6. jbone-sm-zipkinserver (服务调用链)

进入系统

系统名称 系统地址
系统管理 http://jbone-sys-admin.majunwei.com:20002/
服务管理 http://jbone-sm-admin.majunwei.com:10002/
服务调用链 http://jbone-sm-zipkinserver.majunwei.com:10003/

默认用户名密码:jbone/jbone

技术探究

Spring Cloud篇

Eureka实现原理(推荐)

深入理解Spring Cloud - Spring Cloud Netflix Eureka

深入理解Eureka-Eureka架构综述

深入理解Eureka-Eureka数据结构

深入理解Eureka-Eureka Register机制

深入理解Eureka-Eureka Renew机制

深入理解Eureka-Eureka Cancel机制

深入理解Eureka-Eureka Evict机制

深入理解Eureka-Eureka Server缓存机制

深入理解Eureka-Eureka Server节点复制机制

深入理解Eureka-Eureka Client获取注册信息机制

深入理解Eureka-Eureka Server自我保护机制

深入理解Eureka-Eureka Region Zone

深入理解Eureka-Eureka配置列表

CAS 篇

Spring Web Flow - Web流程实现利器

深入理解CAS - CAS票据

CAS认证和注销过程

使用spring-boot-admin监控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-zipkinserver调用链和流量监控未完成;

2、jbone-cas-manager未完成

jbone's People

Contributors

417511458 avatar asxing avatar hongxiangbin avatar ljmatlight avatar tuqiang103 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.