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远程调用拦截器: 通过配置中心动态控制服务版本。

文档资料

  • 服务逻辑关系图: 描述不同系统之间的同步、异步操作流程。
  • 服务数据流程图: 整体和单个展示服务内部的数据流动过程。
  • 核心业务操作流程图: 详细记录业务流程。
  • 技术架构的基础设计: 整体架构设计文档。
相关推荐
Yue丶越9 分钟前
【C语言】自定义类型:结构体
c语言·开发语言
合作小小程序员小小店10 分钟前
桌面开发,点餐管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·c#
一 乐10 分钟前
购物|明星周边商城|基于springboot的明星周边商城系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·spring
笃行客从不躺平15 分钟前
线程池监控是什么
java·开发语言
星轨初途16 分钟前
C++的输入输出(上)(算法竞赛类)
开发语言·c++·经验分享·笔记·算法
y1y1z19 分钟前
Spring框架教程
java·后端·spring
曾经的三心草1 小时前
基于正倒排索引的Java文档搜索引擎3-实现Index类-实现搜索模块-实现DocSearcher类
java·python·搜索引擎
dangdang___go1 小时前
动态内存管理||malloc和free.realloc和calloc
c语言·开发语言·算法·动态内存管理
l***46681 小时前
SSM与Springboot是什么关系? -----区别与联系
java·spring boot·后端
稚辉君.MCA_P8_Java1 小时前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法