Java微服务生态系统构建指南

Biz业务模块

针对某个具体服务,以DDD(领域驱动模型)为基础基础进行层级划分

API层 (Interface)

  • 入参/出参: 定义清晰的API接口,包括请求参数和响应结果。
  • 实现模块: 使用Dubbo/RPC/HTTP等协议实现服务间的调用,同时支持定时任务等功能。
  • Mq Consumer入口: 直接通过Service层注入依赖和当前消费任务,使用动态扩展机制来适应不同的负载情况。(可以多个一起也可以单独拆分)

Service层

  • Domain业务编排: 负责业务逻辑的组织与协调。
  • Repository操作: 对数据访问层的操作进行封装。

Domain业务层

  • Service: 实现具体的业务逻辑。
  • Repository接口: 定义数据访问层的接口规范。

DAO Infrastructure层

  • DAO层面: 实现Repository接口,负责数据持久化操作,如ES, MySQL, MongoDB, Redis等。

其他模块

Common

  • 公共方法: 提供跨模块使用的工具类和通用方法。
  • Util: 工具类。
  • 注解等操作: 定义自定义注解用于框架内使用。

Gateway

  • 过滤、拦截: 提供安全过滤和请求路由功能。

Framework

  • 自定义Spring Boot Starter: 扩展Spring Boot的功能,简化配置。

Dependencies

  • 依赖管理: 统一管理项目依赖版本。

Deploy

  • 部署策略: 部署脚本。

运维部署

  • SDN网络
    • DNS解析(多集群支持)
    • WAF安全防护
    • L4流量转发、L7流量网关(如果使用云厂商就是一个LB)
  • Jenkins CI : 持续集成和部署。
    • ArgoCD、Tekton 等
  • Kubernetes: 应用程序的自动化部署和管理。
  • Prometheus、ELK Stack、SkyWalking(或者MDC等简易方式): 监控和日志收集。

Java生态依赖

简单来说:构成微服务的基础就服务注册和发现两步,其他的基本数据服务治理方面

  • Nacos : 服务发现与配置管理。
    • Apollo也可以用
  • Feign远程调用 : REST客户端简化微服务间的调用。
    • 或其他远程负载均衡调用也可以
  • Seata分布式事务: 解决分布式场景下的事务一致性问题。
  • Redis : 作为缓存或消息队列使用。
    • Caffeine L2 Cache: 二级缓存提高热点数据的访问效率。
    • Distributed Locks: 解决并发访问资源时的一致性问题。
  • MQ : 消息队列服务,适用于业务场景。
    • RocketMQ 功能丰富适合业务使用
    • kafka 性能要更好一些,大数据场景
    • pulsar 新一代MQ架构、更加适合云原生部署,多语言支持能力强
  • Sentinel: 提供熔断、限流和降级能力。
  • Mysql OLTP数据存储
  • ES 大量数据的搜索

非功能需求

灰度发布

  • Nginx + Lua: 利用Lua脚本实现复杂的灰度规则。
  • Nacos + Client远程调用拦截器: 通过配置中心动态控制服务版本。

文档资料

  • 服务逻辑关系图: 描述不同系统之间的同步、异步操作流程。
  • 服务数据流程图: 整体和单个展示服务内部的数据流动过程。
  • 核心业务操作流程图: 详细记录业务流程。
  • 技术架构的基础设计: 整体架构设计文档。
相关推荐
C++小厨神2 分钟前
C#语言的函数实现
开发语言·后端·golang
qwe3526333 分钟前
自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合
开发语言·python
计算机学姐10 分钟前
基于微信小程序的网上订餐管理系统
java·vue.js·spring boot·mysql·微信小程序·小程序·intellij-idea
博一波11 分钟前
【设计模式-行为型】访问者模式
java·设计模式·访问者模式
S-X-S12 分钟前
OpenAI模块重构
开发语言·重构·openai
计算机-秋大田25 分钟前
基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)
java·开发语言·后端·微信·小程序·课程设计
llp111031 分钟前
基于java线程池和EasyExcel实现数据异步导入
java·开发语言
四念处茫茫38 分钟前
【C语言系列】深入理解指针(3)
c语言·开发语言·visual studio
醇氧39 分钟前
【mybatis】 插件 idea-mybatis-generator
java·intellij-idea·mybatis
Eiceblue1 小时前
Java 实现Excel转HTML、或HTML转Excel
java·html·excel·idea