GithubHelp home page GithubHelp logo

chariles / open-smartcloud Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jiangjie888/open-smartcloud

0.0 1.0 0.0 286.43 MB

通用微服务平台:采用SpringCloud系列和alibaba产品集成; 包括基本的服务支撑模块(注册中心,API网关,配置中心,监控中心,日志中心,全文搜索,基础权限模块,登录认证中心, CI/CD等等)

Java 77.20% CSS 2.19% JavaScript 8.35% HTML 9.56% Smarty 0.05% PHP 0.02% Dockerfile 0.13% FreeMarker 1.71% Lua 0.02% Batchfile 0.06% Shell 0.12% TSQL 0.36% Hack 0.23%

open-smartcloud's Introduction

open-smartcloud

通用微服务平台:采用SpringCloud系列和alibaba产品集成; 包括基本的服务支撑模块(注册中心,API网关,配置中心,监控中心,日志中心,全文搜索,基础权限模块,登录认证中心, CI/CD等等); 主要用于学习用途;

1. 项目介绍

项目总体功能划分为

  • 核心组件包jason-kerner:包括常用的数据库封装,redis封装,oauth2客户端封装,swagger2封装,统一异常,输入,输入和web配置等
  • 微服务支撑模块jason-microservice-support:微服务的网关,流控,注册,监控等
  • 配置模块jason-config:提取公共配置单独一个模块,也可以把这些文件维护到nacos配置中心
  • 业务系统模块jason-business:目前有网站后台,统一用户服务和统一登录认证中心
  • 业务公共组件模块jason-biz-support:目前有日志中心(Kafka+Mysql+Elasticsearch)和全文搜索中心(Elasticsearch)
  • 分布式事务模块jason-message:基于消息预处理方式模拟一个订单,付款的解决方案
  • 分布式事务模块jason-transaction:基于Tx-Manager Lcn 代理数据库连接的方式

所有业务系统采用统一的包目录结构,根目录下分为config,core,modular三个主包,所有的AOP和相关的配置都是基于这个结构来现;

具体功能详细如下:

  • 统一登录认证功能

    • 支持oauth2的四种模式登录;支持用户名、密码加图形验证码登录; 支持手机号加密码登录;支持openId登录;支持第三方系统(授权模式)单点登录
  • 分布式支撑功能

    • 基于nacos的统一注册,统一配置的管理;基于sentinel进行流控管理,本项目中使用的组件都是基于源码做了一些Bug的修正处理的,版本为1.6.2;
  • 日志功能

    • 日志功能主要分为两部分:
    • 自定义RequstNo和SpanId进行服务调用间链路的全程跟踪;实时记录链路日志到Kafka中,消费都存入mysql;提供日志记录工具随时可以调用定制的日志;
    • 进行log4j埋点的方式记录系统日志到文件,再通过ElasticSearch+logstash+kibana实时抽取和分析;
  • 全文搜索功能

    • 采用最新的RestHighLevelClient Http方式直接操作Elasticsearch,本项目中所使用elk和java客户端相关版本全为6.8.1的破解版;
  • 分布式事务功能

    • 目前有两实例,一个是可靠消息预处理的方式,另一个采用Tx-Manager Lcn 数据库连接代理的方式;
  • 分库分表功能

    • 采用轻量级中间件sharding-jdbc;
  • 业务基础功能支撑

    • 高性能方法级幂等性支持;RBAC权限管理,实现细粒度控制(方法、url级别);数据库访问层自动实现crud操作,支持多库切换;网关聚合所有服务的Swagger接口文档; 统一跨域处理;统一异常处理;统一的请求RequestData和输出ResponseData处理;
  • 持续集成

    • 自定义支持window,linux多平台,多言语(nodejs,java,dotnet)的通过脚本,结合GitLab源码管理工具,Jenkins构建工具和Harbor私有镜像库;提交代码自动部署集成;  

2. 模块说明

open-smartcloud -- 父项目,公共依赖
│  ├─doc -- 项目文档:系统说明文件夹
│  │  ├─CI&CD -- 日志模块
│  │  │  ├─Dockerfile     -- Dockerfile镜像文件(包括java, nodejs, dotnet core)
│  │  │  ├─Images         -- 自己制作基础镜像,比如java程序运行的基本依赖环境
│  │  │  ├─Tool           -- 持续集成相关的工具
│  │  │  ├─自动发布脚本    -- 持续集成自动发布相关的公共脚本(包括window bat,linux shell)
│  │  │  ├─自动部署脚本    -- 持续集成自动部署相关的公共脚本(包括window bat,linux shell)
│  │  ├─remark              -- 综合相关说明
│  │  ├─sql                 -- 初始化SQL脚本
│  │  ├─syspic              -- 系统截图
│  ├─jason-biz-support           -- 业务公共模块
│  │  ├─modular-log             -- 日志模块
│  │  │  ├─biz-support-log     -- 日志业务系统(kafka+mysql)【端口:7021】
│  │  │  ├─biz-support-log-api -- 日志API和实体定义
│  │  ├─modular-search          -- 全文搜索引擎
│  │  │  ├─search-api          -- 公用ElasticSearch搜索API
│  │  │  ├─search-client       -- 搜索客户端(feign消息者)(需要使用的第三方系统直接引入这个模块)
│  │  │  ├─search-server       -- ElasticSearch搜索服务(feign生产提供者)【端口:7031】
│  ├─jason-business              -- 业务系统模块一级工程
│  │  ├─auth-center             -- 登录认证中心【端口:7000】 (spring security+OAuth2, 支持oauth2的四种认证模式,已重写authorization_code登录页和授权页)
│  │  ├─user-center             -- 用户中心【端口:7011】
│  │  ├─back-web                -- 后台管理网站【端口:8888】
│  ├─jason-config                -- 配置中心(通用配置,可以拷贝到nacos配置中心使用)
│  │─jason-demo                  -- 测试使用
│  │  ├─sharding-demo           -- sharding-jdbc分库分表demo(spring boot + mybatis-plus + sharding-jdbc)
│  ├─jason-job -- 分布式任务调度
│  │  ├─job-admin   -- 任务管理器
│  │  ├─job-core    -- 任务调度核心代码
│  │  ├─job-demo    -- 任务执行者executor样例
│  ├─jason-kernel    --  内核封装
│  │  ├─kernel-actuator -- 封装spring security client端不需要认证的actuator
│  │  ├─kernel-auth     -- 封装spring security client端的通用操作逻辑
│  │  ├─kernel-core     -- 封装系统支持所需要的通用内核
│  │  ├─kernel-db       -- 封装数据库通用操作逻辑,包括支持多个数据源操作,分库分表功能和对mybatisplus mapper配置yml读取注入
│  │  ├─kernel-logger   -- 封装log通用操作逻辑,在需要的系统中直接引入这个包就可以自动拦截各种日志传播给kafka
│  │  ├─kernel-redis    -- 封装Redis的通用操作逻辑
│  │  ├─kernel-ribbon   -- 封装Ribbon和Feign的通用操作逻辑,对微服务间所有请求header进行传递
│  │  ├─kernel-sentinel -- 封装Sentinel的通用操作逻辑
│  │  ├─kernel-swagger  -- 封装Swagger通用操作逻辑
│  ├─jason-message --  分布式事务(通过一个消息中间进行消息预处理的方式)
│  │  ├─jason-demo-account    -- 帐目系统
│  │  ├─jason-demo-api        -- 模块相关API
│  │  ├─jason-demo-order      -- 订单系统
│  │  ├─jason-message-api     -- 消息操作API接口
│  │  ├─jason-message-check   -- 消息监听(feign消费者)
│  │  ├─jason-message-service -- 消息操作服务(feign生产提供者)
│  ├─jason-microservice-eureka -- 微服务相关支持,这里是采用Eureka实现(已用zuul取代)
│  │  ├─api-gateway   -- 网关
│  │  ├─eureka-client -- eureka客户端API
│  │  ├─eureka-server -- eureka注册中心
│  ├─jason-microservice-support        -- 微服务相关支持,这里是采用nacos+zull实现
│  │  ├─jason-register                -- nacos注册中心(把jar上传linux中部署)
│  │  ├─modular-monitor               -- 监控
│  │  │  ├─sm-admin-server           -- spring cloud admin监控中心【端口:9011】
│  │  │  ├─sm-zipkin-server          -- zipkin 链路跟踪监控
│  │  ├─sentinel-parent               -- Sentinel源码:基于开源源码重写后的Sentinel-Dashboard,可以与nacos自动同步拉取和推送配置数据
│  │  ├─spring-cloud-alibaba-sentinel -- Sentinel源码:1.6.2版本,基于开源源码修复feign继承接口Api的Bug
│  │  ├─zuul-gateway -- zuul网关【端口:9000】
│  ├─jason-transaction                 -- 基于Tx-Manager Lcn 的分布式事务
│  │  ├─txlcn-demo-common             -- Lcng事物客户端公共库
│  │  ├─txlcn-demo-spring-service-a   -- Lcng事物demoa 发起者
│  │  ├─txlcn-demo-spring-service-b   -- Lcng事物demob 
│  │  ├─txlcn-demo-spring-service-c   -- Lcng事物democ
│  │  ├─txlcn-manager                 -- Tx-Manager 分布式事务协调管理器

 

3. 截图(点击可大图预览)

登录中心和工作台
登录 工作台
第三方系统纺一登录 第三方系统纺一授权
系统服务
网关服务 登录认证服务
日志管理(链路日志kafka和系统日志log4j+elasticsearch+logstash+kibana)
链路日志 kibana
es管理1 es管理2
监控管理
admin服务监控中心 注册中心和配置中心
流控中心1 流控中心2
持续集成和镜像库
jenkins构建中心
镜像库1 镜像库2
任务中心
xxxjob任务中心

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.