分布式中间件知识体系

多姿多彩的Web

服务架构演进

  • 前分布式 - 单体系统 - SOA

  • 微服务 - 容器分布式 - 无服务器/EDA 编程

    • 单体服务特点,微服务特点

    • 服务分拆方法

  • 思考

    • 若干种交互方式架构方法

    • 应用主流架构设计

使用软件方式

  • 安装软件,高生产力和富客户端

  • PC端浏览器,支持HTML/CSS/Javascript

  • 移动端,嵌入使用H5浏览器

    • 即时通信App,认证信息,发送消息,提供小程序能力

Web服务

  • HTML5/CSS3/Js处理引擎

  • HTTP协议,交互信息。支持HTTP2/3

    • Servlet规范,Web服务器,Tomcat

    • Spring WebMVC开发,模板支持,JSP等

  • WebService,Rest/JaxRS

    • Json,符合资源定义方式

软件应用开发

并发访问

  • 操作系统进程,

    • 调度/中断

    • 容器进程

  • 线程

    • 并发模型,单个或者多个实例(scope,注入)

  • 虚拟线程

    • 方便多任务开发

面向对象

  • 操作系统内存管理

  • 数据结构和算法

  • 面向对象

    • 高级语言设计的基础

  • 设计模式

    • 23个

Java语言

  • Java语言基础,动态特点

  • JDK,工具,JVM核心

  • 线程和并发,函数式

  • JDK版本演进和新特性

  • 常见通用库

开发框架

  • Ioc对象注入框架,AOP

  • Spring核心

    • Beans, Context, Web, WebMVC, Data

  • CDI规范

    • 参考实现 Weld

高性能IO

  • 操作系统IO

    • 文件系统,

    • 网络Socket

  • Java NIO

    • 经典BIO

    • NIO

    • Netty

数据库访问

  • SQL语言

  • 关系数据库,数据表建模

  • JDBC,SpringJDBC, Mybatis

  • ORM编程模型

    • JPA,Hibernate

    • Spring Data

  • BeanValidation

事务

  • 数据可靠和完整性

  • 本地事务

  • 全局事务/分布式事务

显示层技术

  • 浏览器显示 Dom/JQuery/Bootstrap

  • SPA应用,三大Js框架

    • Angular,React,VUE

  • 经典Web展示

    • MVC,Struts

    • JSF,GWT

跨平台界面

  • Awt, Swing

  • Javafx

  • ReactNative, Flutter

  • Electron

  • Qt

分布式系统

分布式访问

  • 同步(跨进程/机器,需考虑不同的接口粒度)

  • 异步响应式(一致的编程接口,对开发者要求更高)

  • RPC远程调用:

    • Corba / RMI / SOAP / Thrift / Dubbo / gRPC(具备stream,单双向能力)

    • 序列化,二进制格式,schema定义

    • 接口定义: idl / wsdl

信息获取机制

  • Websocket

    • 浏览器获取数据, SSE

  • Graphql

    • 获取结构内容

  • OData

远程对象访问

  • EJB对象模型

    • Stateless Session Bean, Stateful Session Bean, Messaging Driven Bean

  • SOA

    • SOAP

    • XML语义和格式

分布式框架

  • 响应式访问,异步接口

  • 响应式Web框架

    • Spring WebFlux

    • Reactor,RxJava,Mutiny

  • Vertx

    • NodeJS

微服务

  • 微服务

    • 12要素

  • SpringBoot

    • 配置,starter

  • Microprofile

    • Config, FaultTolerance, Health, Metrics,

    • Telemetry(OpenTracing), RestClient, OpenAPI

微服务服务治理

  • 服务治理

    • 集中配置管理

    • 服务发现/注册服务,

    • 服务容错和灾难恢复,流量控制

    • 负载均衡 (网络和应用层,均衡策略)

  • 分布式理论Paxos/Gossip

SpringCloud

  • Config Server

  • Eureka

    • 其他Zookeeper,Consul,Etcd等

  • 弹性 Resilience4j / Circuit breaker

  • Gateway,OpenAPI

  • OpenFeign

JEE

  • 发展演进过程

  • JavaEE/JakartaEE规范集

    • JaxRS, CDI, JsonP/B, JPA, Trans, BeanValidation

    • Servlet, JSP(Tag), EL, Websocket, Security,JMS

    • EJB, JaxWS, JCA, JSF, Batch, JCache

应用服务器

  • 服务器产品

    • Wildfly/Glassfish

  • 集群能力和域

  • Java模块化

    • OSGi

    • JBossModule

    • Spring Modulith

消息

  • JMS

    • ActiveMQ

    • Spring Messaging

  • Kafka

    • Connect

    • Stream

  • 其他消息服务器 RabbitMQ, Pulsar

缓存

  • 系统缓存

    • 浏览器,域名解析,内存缓存,CDN

  • 应用嵌入式缓存,

    • JCache,缓存库

    • Spring Cache,Spring Session

  • Redis 分布式缓存

  • Java缓存 Hazelcast,Infinispan

数据库表处理

  • 数据库表迁移

    • Migration工具(Flyway)

  • Schema 注册表管理

  • CDC,事件数据捕获

  • 分库分表

安全技术

  • 密码应用

    • 密码类型

    • 国密

  • 安全证书,PKI体系,证书管理

  • 加密传输 TLS

    • 单向和双向认证

Java应用安全

  • Java Security

    • JCA

    • BC 三方库

  • 认证,授权

    • RBAC

    • OAuth2/OIDC

  • Spring Security

  • Keycloak

系统安全和漏洞防御

  • Linux安全相关

  • 安全漏洞和 CVE

  • Web安全开发,OWASP Top10

服务监控

  • 日志log库,Slf4J

  • 集中日志管理

    • ELK(Elasticsearch, Logstash, Kibana)

  • 监控Promthes,告警系统(故障处理,配置调整)

  • 分布式跟踪Tracing,全链路度量(关键路径、度量指标、事件)

应用网关

  • Nginx

    • 体系结构和配置

    • 模块

  • API网关路由

    • Spring Gateway

  • K8S Gateway API

微服务度量

  • 度量内容,目标、层次(基础设施,应用程序,业务层)

    • 统计学指标,集中量、差异量、分位量、数据集

    • 时间序列,发生时间,摄入时间,处理时间,流窗口

    • 度量方法,聚合、分析、告警报告、行动

  • 度量功能开发 JMX,SpringActuator, Micrometer

操作系统和云原生

Linux操作系统

  • 操作系统 OS

    • RHEL,Ubuntu

    • 包管理,Shell,Systemd

  • 开发环境 Libc

  • 编译工具 Gcc

  • LSB目录环境

  • 系统网络层 Nftable/IpTable,Proxy,防火墙

开发语言综述

  • C和C++

  • 平台 Go,Rust

  • 应用平衡 Java,dotNET

  • 生产力 Python

  • Web应用 Javascript,WebAssembly

容器

  • 容器环境工具

    • Docker

    • Podman

  • 容器运行时 runc

  • 操作系统 cgroups

  • 开发镜像包 alpine,UBI

容器编排管理

  • Kubernetes

    • 架构和运行机制

    • 运行实例

    • 集群分布

  • 发行版

    • Openshift

    • 云实现GKE

  • OperatorSDK

  • OperatorHub

云原生开发

  • 云原生设计

  • 基于容器的开发

  • ServiceMesh

    • Istio

  • Serverless

    • 触发器和功能函数

    • AWS Lamdba

    • Knative

云原生开发框架

  • GraalVM

    • Java Aot

  • Quarkus

    • 云原生开发框架

    • 技术架构,组件构成,Funq

  • SpringNative

    • SpringFunction

云服务架构设计

  • 公有云服务能力

  • 云原生架构

    • GAE/Heroku

    • 公有云K8S能力,应用迁移考虑

云计算六大支柱

  • 卓越操作。运行并监控系统,体现商业价值,持续改进流程

  • 安全性。通过风险评估,提供策略来保护信息、系统以及资产

  • 可靠性。系统从基础设施或者服务故障当中恢复、以动态方式获取计算资源以满足需求

  • 性能效率。高效利用计算资源以满足系统要求

  • 成本优化。避免或者消除不必要成本或者欠佳资源的能力

  • 可持续性。云负责提供高效的共享基础设施、水资源管理和采购可再生能源。客户负责优化工作负载和资源利用率

数据、AI和工作流等高级应用开发

应用集成

  • ESB数据集成

    • Camel

    • SpringIntegration

  • Batch

    • SpringBatch

  • 数据集成iPaas

工作流

  • BPM 工作流程

  • Java工作流

    • jBPM

    • Activiti,Flowable

数据库和存储

  • 关系数据库,MySQL和PG

  • NoSQL数据库,访问API

    • 文档MongoDB,图Neo4j,时序数据库InfluxDB, 列族Cassandra

  • 对象存储

    • S3,Minio

大数据处理

  • 分布式框架

  • 数据批式处理 Spark

  • 数据流式处理 Flink

  • 数据虚拟化

  • 数据库迁移复制

商业智能和报表

  • ETL(提取/变换/载入)

  • 数据仓库

  • 数据分析

  • 数据可视化

    • 商业智能BI

    • 报表方案

数据应用

  • 数据模型,通用和行业内容

  • 数据治理

    • 数据目录

    • 主数据

    • 元数据

    • 数据质量

人工智能-数据科学

  • 数据科学

    • 统计学

  • 机器学习

  • 深度学习

人工智能-专家系统

  • 规则引擎 Drools

  • 求解器 TimeFold

    • 运筹学

    • 管理学案例

人工智能-NLP

  • Java搜索,Lucene库

    • Solr,ElasticSearch

  • 自然语言处理 NLP

    • Apche OpenNLP

人工智能-大语言模型

  • 大语言模型开发

    • OpenAI

    • 提示工程

  • LangChain4j

  • SpringAI

Devops和软件研发管理

配置管理

  • Maven构建

  • Git代码管理

  • 工件仓库

  • JIRA缺陷管理

IT服务设施

  • 持续集成 CICD

    • Jenkins

  • Ansible等自动化配置管理

  • 不可变基础设施

    • Gitops

  • IT服务管理指标 ITSM/ITIL

测试管理

  • 自动化测试,自动化平台

  • 软件测试

    • TDD测试

    • 压力测试

    • 集成测试

开发架构

  • EDA 事件驱动

  • DDD 开发方法论

研发管理

  • 需求管理

  • 项目管理

  • 敏捷开发

设计方法

  • UML

  • 代码度量,规模,重复率,

  • bug缺陷,坏味道,重构,SonarQube

软件应用管理

  • 应用排错和性能调优

  • 应用分析和迁移工具

  • 快速应用构建,低代码开发