Eurynome Cloud is an enterprise-level technology platform for the development of micro services architecture and service capabilities. 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 development, following the SpringBoot programming thought, highly modular and configurable. With service discovery, configuration, fusing, flow limiting, degradation, monitoring, multi-level cache, distributed transactions, workflow and other functions, simple code, clear architecture, very suitable for learning and enterprise as a basic framework.

1. Function introduction

Features:

  • Better code subcontracting and package dependencies, code package responsibilities are clear, avoid meaningless dependencies and repeated dependencies, the basic dependency components are highly encapsulated, reduce IDE indexing time, improve development efficiency
  • Follow the microserver development mode, strengthen the overall configurability, dependent functions can be enabled by @enablexxx, support strategic injection to change the implementation logic of part of the core code. Provide the starter, out of the box, zero configuration to create services, rapid development
  • Both distributed and single architecture are supported. Applications can be quickly built based on the single architecture without building complex infrastructure, and can be seamlessly migrated to the distributed architecture
  • Integrated with wechat applets, content review, license recognition, message push, social login, multi-channel SMS and other rich output of third-party technical capabilities, it can quickly build internet-oriented applets, APPS and other applications.

Detailed Functions

(1) Unified security Certification Center

function instructions
OAuth2.0 security authentication OAuth2.0 authorization code mode, implicit authorization code mode (simple mode), password mode, and client mode are supported
JWT Token Token The OAuth2 Token is encrypted using JWT
Customize OAuth2 page Customize OAuth2 login, Confirm, and Error pages to improve user experience. It can be modified based on its own requirements.
OAuth2 Login verification code OAuth2 Add verification code protection for login, support GIF, Chinese, arithmetic and other types, can be modified by configuration and whether to display verification code control
OAuth2 Encrypted transmission of login data OAuth2 login data is dynamically encrypted and transmitted based on AES. You can configure the form parameter name dynamically to improve system security
RBAC permission management Adopt self-developed RBAC authority system, support OAuth2 Scope authority management
User and Client access data policies It supports OAuth2 UserDetails, ClientDetails direct database and Feign two data acquisition strategy modes. OAuth2 direct database has better performance, and Feign access data service can be independently and dynamically expanded. You can dynamically change the policy
SMS verification code registration and login Support login authentication through mobile phone verification code, unified system with platform, unified return OAuth2 Token, support service interface authentication.
Third party system social registration and login Based on JustAuth to achieve third-party system social login authentication, and platform for the unified system, unified return OAuth2 Token, support service interface authentication. All third-party systems supported by JustAuth are supported.
Wechat mini program registration and login Support micro program login authentication, and the platform for the unified system, unified return OAuth2 Token, support service interface authentication.
Other registrations and logins Policy mode is used to support external login and registration. The login that is not supported at present can be supported by referring to standards and dynamic expansion.
Access authentication Based on the RBAC model, it takes the role as the core, does not need to configure Security permission annotation, supports URL granularity authentication and dynamic configuration of user permissions.

(2) Unified service access gateway

function instructions
Gateway dynamic routing Based on Gateway and Nacos, dynamic routing of service Gateway is realized, which can support service discovery and routing without any additional configuration
Gateway service authentication The service gateway integrates some permission authentication functions to improve system security and reduce platform pressure
Gateway service traffic limiting Traffic limiting is implemented based on Sentinel and customized traffic limiting is supported based on Gateway Filter
Dynamic document aggregation Gateway dynamic Swagger document aggregation, using Swagger 3.0, Knife4j enhanced. Different environment access control
Unified cross-domain processing Realize unified cross – domain processing based on Gateway
Unified error handling The platform unified error processing, support custom error code system
User-defined dynamic routes Supports db-based dynamic route management and routing rule configuration

(3) Micro-service architecture support

function instructions
Service Registration Discovery Service registration and discovery based on Nacos.
Service load balancing Spring Cloud Netflix stops maintenance and uses Spring Cloud Loadbalancer to completely replace Ribbon,
The service fuse is degraded Integrate OpenFeign and Sentinel to ensure the stability of microservices from multiple dimensions such as fuse downgrading, system load protection and hotspot protection
Unified configuration center The unified configuration center built based on Nacos, using MySQL8, supports automatic import of configuration files and encryption of key information, and can be automatically grouped according to the folder name.
Unified Log Center TCP connection is used to collect and send logs, and Skywalking TraceID is integrated to achieve log aggregation and ELK log analysis. Enable or disable the log collection function by using @enablexxx.
Distributed task scheduling Minimal integration xxL-Job, supporting distributed task scheduling function
Distributed transaction processing Seata integration, support distributed transactions, no code intrusion, flexible and convenient
Distributed object storage Supports Minio distributed object storage. At the same time, the integration of Ali Cloud OSS, can be enabled or disabled by @enablexxx annotation.

(4) Micro-service operation monitoring

function instructions
Service invocation chain monitoring Integrate Skywalking to monitor service call chain, and the monitoring depth of call chain can be extended to Undertow, database and Redis
Application Throughput Monitoring Integrated Skywalking for application throughput monitoring
Fusing and downgrade monitoring Integrated Sentinel for service fusing and degradation monitoring
Microservice status monitoring Integrated with Spring Boot Admin to monitor service running status

(5) Automatic data processing

function instructions
Data model initialization RBAC, OAuth2 part of the core tables, Camunda data tables, are created for automation during the initial deployment
Initialize core application data Core data such as RBAC and OAuth2 are automatically imported during the initial deployment
Dynamic summary of URL permission data The automatic URL scanning interface is used as a permission summary and stored in the system. The unique ID is generated according to the URL information, and the data imported for several times will not be repeated. You can enable or modify the scan content dynamically
Automatic import of Yml configurations Configuration files used by services are automatically grouped by folder and imported into Nacos.

(6) Service development support

function instructions
Universal CRUD package There are many kinds of code generators, but the frequency of code generators is lower than expected in practical development. Therefore, instead of providing code generators, regular CRUDS are wrapped in multiple layers, making it easier to develop custom services.
Self-developed two-level cache encapsulation JetCache is used to achieve two levels of local and Redis cache. Combined with CRUD operation, the encapsulation of self-developed data Cache supports dynamic update of Cache data through paging and simple conditional query, avoiding problems such as cumbersome Cache Key creation and failure to update paging data
Multi-type database support The default postgresQL database supports multiple relational databases, such as MySQL, Oracle, and H2, and can be dynamically switched without modifying the code. The Data layer supports both Spring Data Jpa and Mybatis
Multi-message queue support RabbitMQ and Kafka, default Kafka, support message Bus (Spring Cloud Bus)
Multiple service invocation methods OpenFeign is used for service invocation by default, RestTemplate and OkHttps are supported
Shared multi-environment switching Shared and unified multi-environment configuration mode, Yml and Docker are configured in this way to avoid similar problems of service configuration and Dockerfile configuration export copy and modification
Multi-team development management Multi-team development is supported. Services can be developed for each team and individual authorization configuration can be performed.
Annotation model module pattern Except for modules that require dependency logic and strong injection sequence, all functional modules use the spring-.Factories (SPRing-Factories) mechanism. The @enablexxx annotation programming model is used to selectively control whether to enable corresponding modules to reduce unnecessary dependency injection and startup.
Code package record query You can record the code compilation information and query the code version and compilation time, which helps O&M personnel better grasp the code information.

(7) Information transmission integration

function instructions
Wechat applets subscribe to messages Support wechat small program subscription message sending. Provide a subscription message template factory that can be expanded to support a new subscription message template by writing a small amount of code according to your business needs.
Aurora message push integration Integrate aurora message push, encapsulate the API of the aurora background, with high encapsulation degree and convenient call. It can be quickly integrated with customized business requirements, and enabled or disabled by @enablexxx annotation.
Loop message integration It integrates circular IM and message push, making it more convenient to use. It can quickly integrate and expand IM in the application according to customized requirements, and send mobile phone push messages. Enable or disable with the @enablexxx annotation.
Multi-channel SMS integration Integrate ali, Baidu, China Mobile, Huawei, JINGdong, Aurora, netease, Qiniu, Tencent, Youpai, Yunpiao and other platforms SMS channel. You can configure the channel to be dynamically selected. Supports multiple template definitions and template parameter sequence control

(8) Content audit integration

function instructions
Aliyun content review Integrate Aliyun content audit, support text, image, audio, video, web content audit, support synchronous audit, asynchronous audit, asynchronous Callback through the annotation @enablexxx enable or disable.
Wechat mini program content review Integrate wechat mini program content audit, support text, picture, audio content audit, support synchronous and asynchronous audit. Enable or disable with the @enablexxx annotation.
Baidu certificate recognition Integrated Baidu license audit, support OCR identification of business license and ID card. Enable or disable with the @enablexxx annotation.
Tianyan enterprise information query Integrated Tianyan enterprise information query. Enable or disable with the @enablexxx annotation.

2. Technical stack and version description

(1) Spring family barrel 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 about the mapping between Spring bucket versions, see version description

(2) Related technologies involved:

  • JSON serialization: Jackson & FastJson
  • Message queue: Kafka with RabbitMQ, support message Bus (Spring Cloud Bus)
  • Data cache: JetCache + Redis (two-level cache)
  • Databases: Postgresql, MySQL, Oracle…
  • Front-end implementation: Vue + Vuetify (Vue + Vuetify + Typescript + modular)
  • Persistence layer framework: Spring Data Jpa & Mybatis
  • API Gateway: Gateway
  • Service Registry & Discovery and Configuration Center: Nacos
  • Service consumption: OpenFeign & RestTemplate & OkHttp3
  • Load balancing: Ribbon
  • Service outages & Downgrades & Limiting traffic: Sentinel
  • Project construction: Maven
  • Distributed transactions: Seata
  • Service monitoring: Spring Boot Admin
  • Link tracking: Skywalking
  • File service: Ali Cloud OSS/Minio
  • Data debugging: P6SPY
  • Log center: ELK
  • Log collection: Logstash Logback Encoder

3. Version number description

The system version number is divided into four sections.

  • The first and second paragraphs correspond to the Spring Boot version and are changed according to the adopted Spring Boot version. For example, if Spring Boot 2.4.5 is used, start with 2.4.x. x
  • The third paragraph represents the change in system function
  • The fourth paragraph refers to the maintenance and optimization of system functions

4. Engineering structure

Eurynome-cloud ├─ Configurations Docker Build Context Directory ├─ Dependencies ├ exercises - Eurynome-Cloud-Common Common Tools Class ├ Exercises - Eurynome-Cloud-Data ├ Exercises - Eurynome-Cloud-Crud ├ Exercises - Eurynome-Cloud-CRUd ├ Exercises - Eurynome-Cloud-CRUD └ Exercises for Eurynome-Cloud-Cloud - Message - Eurynome-Cloud-Message -- Eurynome-Cloud-Message -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ├ exercises - Eurynome-Cloud-OAuth-Starter starter ├ exercises - Eurynome-Cloud-Oauth-Starter Starter ├ exercises - Eurynome-Cloud-Oauth-Starter └ Exercises for Eurynome-Cloud-Gateway - Service Gateway └ Exercises for Eurynome-Cloud-Gateway Exercises ├─ Eurynome-Cloud-Management - Spring Boot Admin Monitoring Service ├─ Eurynome-Cloud-UAA ├─ Eurynome-Cloud-UAA ├─ Eurynome-Cloud-UAA ├─ Eurynome-Cloud-UAA ├─ ├─ Eurynome-Cloud-Upms-API API ├─ Eurynome-cloud-Upms-REST API ├─ Eurynome-Cloud-Upms-REST API ├─ Eurynome-Cloud-Upms-REST API ├─ Eurynome-Cloud-Upms-REST API ├─ Eurynome-Cloud-Upms-REST General user rights rest interface ├ ├ ─ ─ eurynome - cloud - upms - ability, general user permissions service └ ─ ─ └ ─ ─ eurynome - cloud - BPMN - ability - the workflow serviceCopy the code

5. Project address

  • Backend Gitee address: gitee.com/herodotus/e…
  • Back-end Github address: github.com/herodotus-c…
  • Individual version sample project: gitee.com/herodotus/e…
  • Front-end Gitee address: gitee.com/herodotus/e…

6. Open source agreements

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

  • You need to give the user of your code an Apache Licence
  • If you change the code, you need to explain it in the modified file.
  • In extended code (modified and derived from source code) it is necessary to carry the agreements, trademarks, patent claims, and other instructions specified by the original author in the original code.
  • If the product to be released contains a Notice file, the Apache Licence must be included in the Notice file. You may add your own license to the Notice, but this should not be construed as a change to the Apache Licence. Apache Licence is also a business-friendly license. Users can also modify the code as needed and distribute/sell it as an open source or commercial product.

7. Rights and interests of users

  • Free use for study, graduation, company projects, private work, etc.
  • Follow the Apache 2.0 protocol

8. Communicate feedback

  • Welcome to submit ISSUS, please write clearly the specific cause of the problem, reproduce the steps and environment (context).
  • Blog: blog.csdn.net/Pointer_v
  • Email address: [email protected]
  • QQ group: 922565573

9. Interface preview