Eurynome Cloud is an enterprise-level technology platform for micro-service architecture and service capability development

Eurynome Cloud is an enterprise-level technology middle-platform micro-service architecture and service capability development platform. Based on SpringBoot 2.5.1, Spring Cloud 2020.0.3, Spring Cloud Alibaba 2021.1, Nacos 2.0.1 and other latest versions of the development, follow the SpringBoot programming idea, highly modular and configurable. It has the functions of service discovery, configuration, circuit breaker, current limit, downgrade, monitoring, multi-level cache, distributed transaction, workflow and so on. The code is simple and the architecture is clear, which is very suitable for learning and enterprise as the basic framework.

1. Function introduction

Features:

  • Better code subcontracting and package dependency, clear responsibility of code package, avoid meaningless dependencies and repeated dependencies, highly encapsulate the basic dependent components, reduce IDE indexing time and improve development efficiency
  • Follow the microserver development mode and strengthen the overall configurability. Dependency functions can be opened through @EnablExxx, supporting strategic injection to change the implementation logic of part of the core code. Provide starter, out of the box, zero configuration to create services, rapid development
  • Both distributed and monolithic architectures are supported. Applications can be quickly built based on monolithic architectures without complex infrastructure, and can be seamlessly migrated to distributed architectures
  • The integration of WeChat applet, content review, license recognition, message push, social login, multi-channel SMS and other rich third-party technical ability output, can quickly build Internet-oriented applet, APP and other applications.

Detailed function description

(1) Unified security certification center

function instructions
OAuth2.0 security authentication Support OAuth2.0 authorization code mode, implicit authorization code mode (simple mode), password mode and client mode four login modes
JWT Token Token JWT is used to encrypt OAuth2 Token
Custom OAuth2 page Customize OAuth2 login, confirm and error pages to improve the user experience of the system. Can be modified according to their own needs.
OAuth2 login verification code OAuth2 login to add verification code protection, support GIF, Chinese, arithmetic and other types, can be configured to modify and whether to display verification code control
OAuth2 login data encryption transmission Dynamic encryption transmission of OAuth2 login data is carried out based on AES, and dynamic configuration of form parameter names can be carried out through configuration to improve system security
RBAC permission management Adopt self-developed RBAC authority system, support OAuth2 Scope authority management
User, Client data policy access Support OAuth2 UserDetails, ClientDetails data direct connection database and FEIGN two data acquisition policy modes. OAuth2 direct connection database performance is better, and FEIGN access data service can be independently and dynamically expanded. Which policy to adopt can be dynamically modified through configuration
SMS verification code registration and login It supports login authentication through mobile verification code. It is a unified system with the platform, and returns OAuth2 Token uniformly. It supports authentication of service interface.
Third party system social registration and login Realize social login authentication of third-party system based on Justauth, unify the system with the platform, uniformly return OAuth2 Token, and support authentication of service interface. All third-party systems supported by Justauth are supported.
WeChat applet registration and login Support WeChat small program login authentication, unified system with the platform, unified return OAuth2 Token, support service interface authentication.
Other registrations and logins Use policy mode to support external login and registration, currently not supported login, can refer to the standard, dynamic expansion, can support.
Access authentication Based on the RBAC model, it takes the role as the core and does not need to configure Security permission annotation. It supports URL-granularity authentication and dynamic configuration of user permission.

(2) Unified Service Access Gateway

function instructions
Gateway Dynamic Routing Service Gateway dynamic routing is realized based on Gateway and NaCOS, which can support service discovery and routing without any additional configuration
Gateway service authentication The service gateway integrates some authorization authentication functions to improve system security and reduce platform pressure
Gateway service limits flow Sentinel based on the implementation of the service flow limiting, support for custom flow limiting based on the Gateway Filter
Dynamic document aggregation Gateway dynamic Swagger document aggregation, using Swagger 3.0, support Knife4J enhancements. Different environment access control
Unified cross-domain processing Unified cross-domain processing based on Gateway
Unified error handling The platform unifies error processing and supports custom error code system
Custom dynamic routing Support DB-based dynamic routing management and routing rule configuration

(3) Microservice architecture support

function instructions
Service Registration Discovery Service registration and discovery based on NaCOS.
Service load balancing Spring Cloud Netflix stops maintenance, and the Ribbon is completely replaced with Spring Cloud LoadBalancer.
Service fuse downgrades OpenFeign and Sentinel are integrated to ensure the stability of micro-services from multiple dimensions, such as fuse degradation, system load protection and hot spot protection
Unified Configuration Center Unified configuration center built based on Nacos, using MySQL8, supports automatic import of configuration files and encryption of key information, and can be configured automatically in groups according to folder names.
Unified Log Centre Logs are collected and sent by TCP direct connection, and Skywalking TraceID is integrated to realize log aggregation and ELK log analysis. Enable or disable log collection using the @EnablExxx annotation.
Distributed task scheduling Minimalist integration XXL-Job, support distributed task scheduling function
Distributed transaction processing Seata integration, support distributed transactions, no code intrusion, flexible and convenient
Distributed object storage Support for Minio distributed object storage. At the same time, Ali Cloud OSS can be integrated, and the function can be turned on or off by @EnablExxx annotation.

(4) Operation monitoring of micro-services

function instructions
Service invocation chain monitoring Integration of Skywalking for service call chain monitoring, call chain monitoring depth can be extended to Undertow, database, Redis
Application throughput monitoring Integrate SkyWalking for application throughput monitoring
Fuse break, downgrade monitoring Integrate Sentinel for fuse and downgrade monitoring of services
Microservice status monitoring Integrate Spring Boot Admin to monitor the running state of the service

(5) Automated data processing

function instructions
Data model initialization RBAC, OAuth2 part core table and CAMUNDA data table are created for automation during the initial deployment process
Core application data initialization Core data such as RBAC and OAuth2 are automatically imported in the initial deployment process
The URL permissions data are summarized dynamically Automatic scan URL interface is stored in the system as permission summary, and unique ID is generated according to URL-related information. Data imported several times will not be repeated. Scanning content can be dynamically opened or modified by configuration
The YML configuration is automatically imported The configuration files needed by the service can be automatically grouped by folder and imported into Nacos.

(6) Service development support

function instructions
Common CRUD encapsulation There are many code generators of various types. Considering the effect of practical application, the frequency of use of code generators in practical development is lower than ideal expectation. Therefore, instead of providing a code generator, regular CRUD is encapsulated at many levels to make the development of customized services easier.
Self-developed two-level cache encapsulation Use JetCache to implement local and Redis level caching. Combined with CRUD operation, self-research data Cache encapsulation, support paging and simple conditional query Cache data dynamic update, avoid Spring Cache and other Cache Key creation tedious and paging data can not be updated
Multi-type database support PostgreSQL database is adopted by default, which supports multiple relational databases such as MySQL, Oracle, H2, etc., and can be changed dynamically without modifying the code. The Data layer supports both Spring Data JPA and MyBatis
Multiple message queue support RabbitMQ and Kafka, default to Kafka, support for message Bus (Spring Cloud Bus)
Multiple service invocations By default, OpenFeign is used for inter-service invocation with support for RESTTemplate and OKHTTPS
Shared multi-environment switching Shared and unified multi-environment configuration mode, YML and Docker are configured in this way to avoid similar problems such as service configuration and Dockerfile configuration export copying and modification
Multi-team development management Support for multi-team development, services can be developed for each team, for individual authorization configuration.
Annotate the model module pattern In addition to the necessary dependency logic and the module requiring strong injection sequence using Spring SPI (spring.factories) mechanism, other functional modules are using @EnableXxx annotation programming model, which can selectively control whether to open the corresponding module to reduce unnecessary dependency injection and startup.
Code packaging record query The compilation information of the code can be recorded, and relevant information such as the version of the code and compilation time can be queryed to facilitate the operation and maintenance personnel to better grasp the code information.

(7) Information transmission integration

function instructions
WeChat applet subscribes to messages Support WeChat small program subscription message sending. Providing a subscription message template factory, you can write a small amount of code according to your business needs to expand support for new subscription message template.
Aurora message push integration Integrated Aurora message push, encapsulate the background API of Aurora, high encapsulation degree, easy to call, can be quickly integrated with custom business requirements, open or close through @EnablExxx annotation.
Loop message integration Integrated ring message IM and message push, more convenient to use, can quickly integrate and expand IM in the application according to custom requirements, send mobile push messages. Turn it on or off with the @EnablExxx annotation.
Multi-channel SMS integration Integrated Ali, Baidu, China Mobile, Huawei, Jingdong, Aurora, netease, Qiniu, Tencent, and take, cloud piece and other platforms SMS send channels. The specific channel to use can be dynamically selected through configuration. Support multi-template definition and sequence control of template parameters

(8) Content audit integration

function instructions
Ali cloud content review Integrated Ali cloud content audit, support text, pictures, audio, video, web content audit, support synchronous audit, asynchronous audit, asynchronous Callback audit by @enablexxx annotation on or off.
WeChat small program content review Integrated WeChat small program content review, support text, pictures, audio content review, support synchronous, asynchronous review. Turn it on or off with the @EnablExxx annotation.
Baidu license recognition Integrated Baidu license review, support business license, ID card OCR recognition. Turn it on or off with the @EnablExxx annotation.
Sky eye search enterprise information query Integrate Sky Eye Search enterprise information query. Turn it on or off with the @EnablExxx annotation.

2. Technical stack and version description

(1) Spring family bucket and core technology version

component version
Spring Boot 2.5.1
Spring Cloud 2020.0.3
Spring Cloud Alibaba 2021.1
Spring Boot Admin Against 2.4.1
Nacos 2.0.1
Sentinel 1.8.0 comes with
Seata 1.3.0

For details, please refer to:
Release notes

(2) Related technologies involved:

  • JSON serialization: Jackson & FastJSON
  • Message queue: Kafka ADAPTS to RabbitMQ and supports message Bus (Spring Cloud Bus)
  • Data cache: Jetcache + Redis (two-level cache)
  • Database: PostgreSQL, MySQL, Oracle…
  • Front-end implementation: Vue + Vuetify (single version Vue + Vuetify + TypeScript + Modular)
  • Persistence layer framework: Spring Data JPA & MyBatis
  • API Gateway: Gateway
  • Service Registration & Discovery and Configuration Center: NACOS
  • Service consumption: OpenFeign & RestTemplate & OKHTTP3
  • Load Balancing: Ribbon
  • Service fuse & downgrade & current limit: Sentinel
  • Project build: Maven
  • Distributed transactions: SEATA
  • Service monitoring: Spring Boot Admin
  • Link tracking: Skywalking
  • File service: Aliyun OSS/Minio
  • Data debugging: P6Spy
  • Log center: Elk
  • Log collection: Logstash Logback Encoder

3. Description of version number

The version number of this system is divided into four sections.

  • Segments 1 and 2, which correspond to the Spring Boot version, change depending on the Spring Boot version adopted. For example, if you are currently running Spring Boot 2.4.5, start with 2.4.x.x
  • The third paragraph, indicates the change of system function
  • The fourth section represents the maintenance and optimization of system functions

4. Engineering structure

Eurynome - Cloud Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon - Icon Unified control version and dependency ├ ─ ─ the documents - engineering related documents ├ ─ ─ packages - based general rely on package ├ ├ ─ ─ eurynome - cloud - common - the public utility class ├ ├ ─ ─ eurynome - cloud - data -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud -- Eurynome-cloud-crud Eurynome - cloud - sercurity - Security common code ├ ├ ─ ─ eurynome - cloud - request - the OAuth2 generic code ├ ├ ─ ─ eurynome - cloud - message - - Eurynome-cloud-kernel - Essential Component for Microservice Access Platform - Eurynome-cloud-oauth-starter - Custom Oauth2 Starter ├─ Eurynome-cloud-starter -- Platform -- Core Services -- Eurynome-cloud-gateway -- Core Services -- Platform -- Core Services -- Eurynome-cloud-gateway -- Core Services -- Platform -- Core Services -- Platform -- Core Services -- Eurynome-cloud-gateway -- Core Services -- Platform Eurynome-cloud-management -- Spring Boot Admin Monitoring Service -- Eurynome-cloud-UAA -- Uniform Certification Module Heavy Metal Exercises -- Services -- Platform Service Heavy Metal Exercises -- Eurynome - cloud - upms - API - general user permission API ├ ├ ─ ─ eurynome - cloud - upms - logic, general user permissions service ├ ├ ─ ─ eurynome - cloud - upms - rest - Universal User Permission REST Interface - Eurynome-cloud-upms-ability - Universal User Permission Service, ├─ ├─ Eurynome-cloud-bpmn-ability - Workflow Service

5. Project address

  • The back-end Gitee address: https://gitee.com/herodotus/eurynome-cloud
  • The back-end making address: https://github.com/herodotus-cloud/eurynome-cloud
  • Single version of the sample project: https://gitee.com/herodotus/eurynome-cloud-athena
  • The front-end Gitee address: https://gitee.com/herodotus/eurynome-cloud-ui

6. Open source protocol

Apache Licence 2.0 Apache Licence is a license used by the well-known open source non-profit organization Apache Licence. The protocol is similar to BSD in that it encourages code sharing and respect for the copyright of the original author. It also allows code to be modified and redistributed (as open source or commercial software). The following conditions need to be met:

  • The user of the code needs to be given an Apache Licence
  • If you make any changes to the code, you need to explain them in the file you made the changes to.
  • Extended code (modified code and code derived from source code) should include agreements, trademarks, patent notices, and other instructions that the original author stated were required to include.
  • If the reissued product contains a Notice file, Apache Licence should be included in the Notice file. You can add your Licence to your Notice, but this does not mean that you have changed the Apache Licence. Apache Licences are also commercially friendly licenses. Users can also modify the code to suit their needs and publish/sell it as open source or commercial products.

7. Rights and interests of users

  • It is allowed to be used for free for study, graduation project, company project, private work, etc.
  • Follow the Apache 2.0 protocol

8. Communicate feedback

  • Welcome to submit ISSUS. Please write down the specific reason for the issue, the steps to reproduce it and the context (context).
  • Blog: https://blog.csdn.net/Pointer_v
  • Email address: [email protected]
  • QQ group: 922565573

9. Interface preview