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

type
status
slug
date
tags
summary
category
password
icon

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

文档资料

  • 服务逻辑关系图: 描述不同系统之间的同步、异步操作流程。
  • 服务数据流程图: 整体和单个展示服务内部的数据流动过程。
  • 核心业务操作流程图: 详细记录业务流程。
  • 技术架构的基础设计: 整体架构设计文档。

其他

notion image
 
上一篇
为什么大家还在用php
下一篇
php strtr其他语言实现Node
Loading...
文章列表
王小扬博客
Git
AI
产品
film
AI Code
Java
其他
计算机网络
DB
云原生
Node
Docker
操作系统
Elasticsearch
Apollo
Nestjs
Think
大前端
PHP
软件开发
设计
生活技巧
CI
缓存