当前位置: 首页 > news >正文

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

文档资料

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《PostgreSQL 中通过函数实现不确定列的数据更新操作》
  • MYSQL 删除一个字段前,判断字段是否存在
  • 高级Web安全技术(第二篇)
  • C#学习笔记16:串口上位机数据绘图助手Plotter的开发
  • 如何学好uni-app
  • C# POST请求 各种实现方法梳理
  • 004集——静态常量和动态常量——C#学习笔记
  • 【通信原理】matlab中qammod的介绍
  • 作业8.9
  • ES架构模型
  • AI大模型赋能开发者|海云安创始人谢朝海受邀在ISC.AI 2024大会就“大模型在软件开发安全领域的应用”主题发表演讲
  • Java内存模型-清晰剖析
  • 【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
  • Spring中dbUtil的概念和搭建使用
  • docker pull实现断点续传
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Android Studio:GIT提交项目到远程仓库
  • Druid 在有赞的实践
  • java8 Stream Pipelines 浅析
  • Java知识点总结(JavaIO-打印流)
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS 面试题总结
  • leetcode98. Validate Binary Search Tree
  • PHP CLI应用的调试原理
  • REST架构的思考
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vue总结
  • 入门到放弃node系列之Hello Word篇
  • 通过git安装npm私有模块
  • 物联网链路协议
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​​​【收录 Hello 算法】9.4 小结
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #window11设置系统变量#
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #数据结构 笔记一
  • (12)目标检测_SSD基于pytorch搭建代码
  • (13)DroneCAN 适配器节点(一)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (转)拼包函数及网络封包的异常处理(含代码)
  • .bashrc在哪里,alias妙用
  • .net core 管理用户机密
  • .Net CoreRabbitMQ消息存储可靠机制
  • .net framework profiles /.net framework 配置
  • .Net Memory Profiler的使用举例
  • .NET 服务 ServiceController
  • .net6Api后台+uniapp导出Excel
  • .NET处理HTTP请求
  • .NET使用存储过程实现对数据库的增删改查
  • .NET微信公众号开发-2.0创建自定义菜单
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国