HP-SOA: un marco de microservicios Java totalmente funcional, fácil de usar y altamente escalable.
- Página de inicio del proyecto: http://www.oschina.net/p/hp-soa
- Dirección de descarga: https://github.com/ldcsaa/ hp-soa
Arquitectura Tecnológica
Integración tecnológica
- Marco de microservicio: Dubbo 3.x
- Centro de registro de servicios: Nacos
- Centro de configuración: Nacos
- Centro de gobernanza de servicios: administrador de Dubbo
- Centro de control de tráfico: Sentinel Dashboard + Nacos
- Base de datos: MySQL, Druid, mybatis-plus (admite múltiples fuentes de datos)
- Caché: Redis + Redisson (admite múltiples instancias)
- Bus de mensajes: RabbitMQ (admite múltiples instancias, admite mensajes confiables)
- MQTT publica y suscríbete: Eclipse OPS mqttv5
- Trabajo distribuido: xxl-job
- Trabajo ligero: Redisson + programado para primavera
- Transacciones distribuidas: Seata
- ID global: Hoja (admite ID de copo de nieve e ID de segmento)
- Registro unificado: Log4j + Kafka + ELK
- Seguimiento de la cadena de llamadas: Skywalking
- Alertas de seguimiento: Prometheus + Grafana + Alert Manager
Descripción del módulo
- El módulo de gestión de dependencias hp-soa-dependencies define los paquetes dependientes y sus versiones.
- El módulo básico hp-soa-framework-core define los componentes y herramientas básicos de HP-SOA
- El módulo de aplicación web hp-soa-framework-web integra spring-boot y Dubbo para proporcionar funciones centrales de microservicio
- hp-soa-framework-leaf El módulo de identificación global de Leaf, basado en Leaf, proporciona una función de identificación global distribuida
- El módulo del kit de herramientas de extensión hp-soa-framework-util proporciona componentes y herramientas como procesamiento de archivos, correo electrónico y acceso remoto.
- hp-soa-starter-web Iniciador de aplicaciones web, configuración e inicio de servicios de aplicaciones, todos los proyectos HP-SOA deben introducir este iniciador
- hp-soa-starter-task Iniciador de tareas, activa la función Spring Task y proporciona correlación de registros y capacidades de seguimiento de la cadena de llamadas para Spring Task
- hp-soa-starter-nacos Arrancador del centro de configuración de Nacos, activa la función del centro de configuración y la aplicación puede cargar la configuración desde el centro de configuración remoto
- hp-soa-starter-data-mysql MySQL Starter abre la función de acceso a la base de datos MySQL y proporciona fuentes de datos dinámicas, monitoreo de fuentes de datos y capacidades de gestión de transacciones globales.
- hp-soa-starter-data-redis Iniciador de Redis, habilita la función de acceso a Redis, admite múltiples instancias de Redis y admite Spring Cache
- hp-soa-starter-rabbitmq Iniciador Rabbitmq, habilita la función de acceso a Rabbitmq, admite múltiples instancias de Rabbitmq, proporciona soluciones confiables de implementación de mensajes y capacidades de seguimiento de mensajes
- hp-soa-starter-mqtt Arrancador MQTT, activa la función de publicación y suscripción de MQTT, es totalmente compatible con el protocolo mqttv5
- hp-soa-starter-job-exclusive iniciador de trabajos liviano, permite una función de trabajo exclusiva y liviana, proporciona correlación de registros de ejecución de trabajos y capacidades de seguimiento de la cadena de llamadas
- hp-soa-starter-job-xxljob Xxl-Job Starter, activa la función Xxl-Job y se combina con xxl-job-admin para proporcionar capacidades de trabajo distribuido
- hp-soa-starter-leaf Iniciador de ID global de Leaf, activa la función de ID global de Leaf, admite la generación de ID global a través del algoritmo Snowflake y el algoritmo Segment
- hp-soa-starter-seata El iniciador Seata activa la función de transacciones distribuidas de Seata y combina Seata TC para proporcionar capacidad de transacciones distribuidas.
- hp-soa-starter-sentinel Sentinel Starter, activa la función de control de flujo Sentinel, combina Sentinel Dashboard y Nacos para proporcionar control de flujo y capacidades de persistencia de reglas de control de flujo
- hp-soa-starter-skywalking Skywalking Starter activa la función de seguimiento de la cadena de llamadas de Skywalking y combina Skywalking Agent y Skywalking Server para proporcionar capacidades de seguimiento de la cadena de llamadas.
Acceso a la aplicación (referencia: hp-demo )
- Agregue dependencia HP-SOA en pom.xml
<dependencyManagement> <dependencias> <!-- 添加 hp-soa 依赖管理 --> <dependencia> <groupId> io.github.hpsocket </groupId> <artifactId> hp-soa-dependencies </artifactId> <versión> $ {hp-soa.version} </version> <type> pom </type> <scope> import </scope> </dependency> </dependency> </dependencyManagement> <dependencias> <!-- Nombre hp-soa-starter-web --> <dependencia> <groupId> io.github.hpsocket </groupId> <artifactId> hp-soa-starter-web </artifactId> </dependencia > <!--根据项目需要,引用其它 hp-soa starter --> <dependencia> <groupId> io.github.hpsocket </groupId> <artifactId> hp-soa-starter-xxx </artifactId> </dependencia > </dependencias>
- Modifique la configuración de la aplicación (consulte el archivo de configuración local de la demostración hp-demo-bff-basic y el archivo de configuración remota del centro de configuración ). Elementos de configuración principales:
- hp.soa.web
- dubbo
- servidor
- primavera
- gestión
- primaveradoc
- Modificar la configuración global (opcional)
- Archivo de configuración del sistema, utilizado para establecer las propiedades del sistema, archivo de configuración predeterminado:
/opt/hp-soa/config/system-config.properties
Referencia: system-config.properties - Archivo de configuración extendido, utilizado para configurar propiedades públicas como la dirección del centro de registro y la dirección del centro de configuración. Archivo de configuración predeterminado:
/opt/hp-soa/config/extended-config.properties
Referencia: extended-config.properties
- Archivo de configuración del sistema, utilizado para establecer las propiedades del sistema, archivo de configuración predeterminado:
- Implementar la interfaz de autenticación HTTP (opcional)
- Si se trata de una aplicación Gateway/BFF y se aplican atributos
hp.soa.web.access-verification.enabled = true
, se debe implementar la interfaz AccessVerificationService para la autenticación de solicitudes HTTP.
- Si se trata de una aplicación Gateway/BFF y se aplican atributos
- Iniciar aplicación
- Utilice io.github.hpsocket.soa.framework.web.server.main.AppStarter como clase de inicio para iniciar la aplicación.
- Referencia de parámetros de inicio de JVM: ejemplo de parámetros de inicio de JVM
Mejores prácticas
- Integración de aplicaciones
- Centro de configuración de Nacos
- base de datos mysql
- caché de Redis
- Cola de mensajes RabbitMQ
- Publicación-suscripción MQTT
- Tarea de primavera
- programación de trabajos
- Generación de ID global de hoja
- Transacciones distribuidas de Seata
- Registro unificado ELK
- Control de flujo centinela
- Seguimiento de la cadena de llamadas de Skywalking
- Kit de herramientas
- Empaquetar y publicar
- Mejores prácticas