Spring/SpringBoot/SpringCloud
Spring:是一个生态体系(也可以说是技术体系),是集大成者,它包含了Spring Framework、Spring Boot、Spring Cloud等(还包括Spring Cloud data flow、spring data、spring integration、spring batch、spring security、spring hateoas),是一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;
SpringMvc:是spring基础之上的一个MVC框架,是基于Servlet 的主要解决WEB开发的问题路径映射和视图渲染等;
SpringBoot:使用了默认大于配置的理念,集成了快速开发的spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;
SpringCloud:大部分的功能插件都是基于springBoot去实现的,springCloud关注于全局的微服务整合和管理,将多个springBoot单体微服务进行整合以及管理; springCloud依赖于springBoot开发,而springBoot可以独立开发;
Spring Github地址:https://github.com/spring-projects/spring-framework
SpringBoot Github地址:https://github.com/spring-projects/spring-boot
SpringCloud Github地址:https://github.com/spring-cloud
官网:https://spring.io/
Spring项目:https://spring.io/projects
微服务RPC框架:Dubbo
Apache Dubbo 是一款微服务框架,为大规模微服务实践提供高性能 RPC 通信、流量治理、可观测性等解决方案,涵盖 Java、Golang 等多种语言 SDK 实现。
Github地址:https://github.com/apache/dubbo
官网:https://dubbo.apache.org/
官方文档:https://dubbo.apache.org/en/docs/
中文文档:https://dubbo.apache.org/zh/docs/
微服务注册中心(分布式系统的服务发现与配置)
ZooKeeper
ZooKeeper 是分布式应用程序的分布式开源协调服务。
ZooKeeper 也经常被用作分布式配置管理,依赖 ZooKeeper 的发布订阅功能,基于 watch 机制实现。和 Disconf 的实现类似。
应用:ZooKeeper 主要应用在 Dubbo 的注册中心实现,Dubbo + ZooKeeper 成为注册中心的经典解决方案。服务提供者在启动的时候,会在 ZooKeeper 上注册服务。服务消费者在启动的时候,会向 ZooKeeper 注册中心订阅服务列表,并解析出所有提供者的 URL 地址来作为该服务地址列表。
Github地址:https://github.com/apache/zookeeper
官网:https://zookeeper.apache.org/
官方文档:https://zookeeper.apache.org/doc/r3.8.0/index.html
中文文档:https://zookeeper.net.cn/
Eureka(不维护)
Eureka 是一个基于 REST 的服务,主要在 AWS 云中使用, 定位服务来进行中间层服务器的负载均衡和故障转移。
应用:在 Spring Cloud 中,提供了 Eureka 来实现服务发现功能。Eureka 采用的是 Server 和 Client 的模式进行设计,Eureka Server 扮演了服务注册中心的角色,为 Client 提供服务注册和发现的功能。
Github地址:https://github.com/Netflix/eureka
官方文档:https://github.com/Netflix/eureka/wiki
中文文档:https://www.springcloud.cc/spring-cloud-netflix.html
Nacos
Nacos 提供了一组简单易用的特性集,快速实现动态服务发现、服务配置、服务元数据及流量管理。
应用:Nacos和 Eureka 类似,独立于系统架构,需要部署 Nacos Server。 提供了服务注册和发现功能,使用 Nacos 可以方便地集成 Spring Cloud 框架,还提供了配置管理、元数据管理和流量管理等功能,并且提供了一个可视化的控制台管理界面。
Github地址:https://github.com/alibaba/nacos
官网:https://nacos.io/
官方文档:https://nacos.io/zh-cn/docs/what-is-nacos.html
Etcd(基于GO)
Etcd是一个高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。可以优雅地处理网络分区期间的领导者选举,即使在领导者节点中也可以容忍机器故障。
Github地址:https://github.com/etcd-io/etcd
官网:https://etcd.io/
官方文档:https://etcd.io/docs/
中文文档:https://doczhcn.gitbook.io/etcd/index
Consul(基于GO)
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案
Github地址:https://github.com/hashicorp/consul
官网:https://www.consul.io/
官方文档:https://www.consul.io/docs
中文文档:https://www.springcloud.cc/spring-cloud-consul.html
社区:https://discuss.hashicorp.com/c/consul/29
分布式配置中心
Spring Cloud Config
Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案
Github地址:https://github.com/spring-cloud/spring-cloud-config
官网:https://spring.io/projects/spring-cloud
官方文档:https://docs.spring.io/spring-cloud-config/docs/current/reference/html/
中文文档:https://www.springcloud.cc/spring-cloud-config.html
Apollo
Apollo(阿波罗)是一款可靠的分布式配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
Github地址:https://github.com/apolloconfig/apollo
官网:https://www.apolloconfig.com/
中文文档:https://www.apolloconfig.com/#/zh/README
微服务网关
Zuul
Zuul 是 Netflix 开发的一款提供动态路由、监控、弹性、安全的网关服务。
Zuul 1.x 版本是基于 Servlet 构建的,采用的是阻塞和多线程方式。1.x 版本在 Spring Cloud 中做了比较好的集成,但是性能不是很理想。
Zuul 2.x 版本,Spring Cloud 官方并没有集成,而是开发了自己的 Spring Cloud Gateway。
Zuul 1.x Github地址:https://github.com/spring-cloud/spring-cloud-netflix
Zuul 2.x Github地址:https://github.com/Netflix/zuul
Zuul 1.x 官方文档:https://cloud.spring.io/spring-cloud-netflix/multi/multi__router_and_filter_zuul.html
Zuul 2.x 官方文档:https://github.com/Netflix/zuul/wiki
Spring Cloud Gateway
Spring Cloud Gateway 是 Spring Cloud 体系的第二代网关组件,基于 Spring 5.0 的新特性 WebFlux 进行开发,底层网络通信框架使用的是 Netty。
Spring Cloud Gateway 可以替代第一代的网关组件 Zuul。Spring Cloud Gateway 可以通过服务发现组件自动转发请求,集成了 Ribbon 做负载均衡,支持使用 Hystrix 对网关进行保护。
Github地址:https://github.com/spring-cloud/spring-cloud-gateway
官网:https://spring.io/projects/spring-cloud
官方文档:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/
分布式流量治理组件
Sentinel
Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
Github地址:https://github.com/alibaba/Sentinel
官网:https://sentinelguard.io/
官方文档:https://sentinelguard.io/zh-cn/docs/introduction.html
Hystrix(基本不维护)
Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 同样拥有保护系统的能力.
Github地址:https://github.com/Netflix/Hystrix
官方文档:https://github.com/Netflix/Hystrix/wiki/
Resilience4j
Resilience4j是一个受Netflix Hystrix启发的轻量级容错库,是一个轻量、易用、可组装的高可用框架,支持熔断、高频控制、隔离、限流、限时、重试等多种高可用机制。
Github地址:https://github.com/resilience4j/resilience4j
官网:https://resilience4j.readme.io/
官方文档:https://resilience4j.readme.io/docs
分布式应用监控组件(分布式监控解决方案)
CAT
CAT 是基于 Java 开发的分布式实时监控系统,提供系统丰富的性能指标、健康状况、实时告警等。CAT在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集群智能调度等领域提供业界领先的、统一的解决方案。
Github地址:https://github.com/dianping/cat
官方文档:https://github.com/dianping/cat/wiki
Nagios
Nagios是一款开源监控组件,支持更丰富的监控设备,包括各类网络设备和服务器,并且对不同的操作系统都可以进行良好的兼容,支持 Windows 、Linux、VMware 和 Unix 的主机,另外对各类交换机、路由器等都有很好的支持。
Github地址:https://github.com/NagiosEnterprises/nagioscore
官网:https://www.nagios.org/
官方文档:https://www.nagios.org/documentation/
Zabbix
Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能。
Zabbix 整体可以分为 Zabbix Server 和 Zabbix Client,Zabbix 的 Server 使用 C 语言实现,可视化界面基于 PHP 实现。对分布式支持友好,可以对各类监控指标进行集中展示和管理,并且有很好的扩展性,采用了微内核结构,可以根据需要,自己开发完善各类监控。
Github地址:https://github.com/zabbix/zabbix
官网:https://www.zabbix.com/
官方文档:https://www.zabbix.com/documentation/6.2/en/manual
中文文档:https://www.zabbix.com/documentation/6.0/zh/manual
分布式消息中间件
RocketMQ
RocketMQ是一个分布式消息和流数据平台,具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性。
Github地址:https://github.com/apache/rocketmq
官网:https://rocketmq.apache.org/
官方文档:https://github.com/apache/rocketmq/tree/master/docs/en
中文文档:https://github.com/apache/rocketmq/tree/master/docs/cn
RabbitMQ
RabbitMQ是由Erlang语言开发,基于AMQP协议(Advanced Message Queuing Protocol 高级消息队列协议)实现的消息队列,AMQP的主要特性是面向消息、队列、路由、可靠性、安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性有着很高的要求场景,对性能和吞吐量的要求在其次。
Github地址:https://github.com/rabbitmq/rabbitmq-server
官网:https://rabbitmq.com/
官方文档:https://rabbitmq.com/documentation.html
ActiveMQ
ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的、可扩展的、稳定的和安全的企业级消息通信。
Github地址:https://github.com/apache/activemq
官网:https://activemq.apache.org/
官方文档:https://activemq.apache.org/using-activemq-5
分布式流处理平台:Kafka
Kafka一个开源流处理平台,由Scala和Java编写,为处理实时数据提供一个统一、高吞吐、低延迟的平台。
Github地址:https://github.com/apache/kafka
官网:https://kafka.apache.org/
官方文档:https://kafka.apache.org/documentation/
中文文档:https://kafka.apachecn.org/documentation.html
分布式事务解决方案
Seata
Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 提供了 AT、TCC、SAGA 和 XA 事务模式。
Github地址:https://github.com/seata/seata
官网:https://seata.io/
官方文档:https://seata.io/zh-cn/docs/overview/what-is-seata.html
关系型数据库
MySQL
MySQL 是应用最广泛的开源关系数据库,是许多常见网站、应用程序和商业产品使用的主要关系数据存储。
Github地址:https://github.com/mysql/mysql-server
官网:https://www.mysql.com/
中文官网:https://www.mysql.com/cn/
官方文档:https://dev.mysql.com/doc/
中文文档:https://www.deituicms.com/mysql8cn/cn/web.html
非关系型数据库
持久化缓存数据库:Redis
Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
Github地址:https://github.com/redis/redis
官网:https://redis.io/
中文官网:http://www.redis.cn/
官方文档:https://redis.io/docs/
中文文档:http://www.redis.cn/documentation.html
非持久化缓存数据库:Memcached
Memcached 是一种易于使用的高性能内存数据存储。提供了一项成熟的可扩展开源解决方案,能够实现亚毫秒级响应时间并用作缓存或会话存储。为 Web、移动应用程序、游戏、广告技术和电子商务领域的实时应用程序提供支持。
Github地址:https://github.com/memcached/memcached
官网:https://www.memcached.org/
中文官网:http://www.redis.cn/
官方文档:https://github.com/memcached/memcached/wiki
中文文档:http://www.redis.cn/documentation.html
分布式文件存储数据库:MongoDB
MongoDB是专为可扩展性,高性能和高可用性而设计的数据库。可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。 MongoDB的本地复制和自动故障转移功能使应用程序具有企业级的可靠性和操作灵活性。
Github地址:https://github.com/mongodb/mongo
官网:http://www.mongodb.com/
官方文档:https://www.mongodb.com/docs/
中文文档:https://docs.mongoing.com/
中文社区:https://mongoing.com/
分布式日志管理方案:ELK
分布式搜索和数据分析引擎:Elasticsearch
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎
Github地址:https://github.com/elastic/elasticsearch
官网:https://www.elastic.co/elasticsearch/
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
中文文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
数据收集引擎:Logstash
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
Github地址:https://github.com/elastic/logstash
官网:https://www.elastic.co/logstash/
官方文档:https://www.elastic.co/guide/en/logstash/current/index.html
数据分析和可视化平台:Kibana
Kibana 是一款开源的数据分析和可视化平台,可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作
Github地址:https://github.com/elastic/kibana
官网:https://www.elastic.co/kibana/
官方文档:https://www.elastic.co/guide/en/kibana/current/index.html
中文文档:https://www.elastic.co/guide/cn/kibana/current/index.html
轻量型数据采集器:Beats
Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。
Github地址:https://github.com/elastic/beats
官网:https://www.elastic.co/beats/
官方文档:https://www.elastic.co/guide/en/beats/libbeat/current/index.html
分布式调用跟踪
Dapper
论文地址:http://bigbully.github.io/Dapper-translation/
Zipkin
Zipkin 是一个开源的分布式追踪系统。在微服务架构下,它用于帮助收集排查潜在问题的时序数据。它同时管理数据收集和数据查询。Zipkin 的设计基于 Google Dagger 论文。
Github地址:https://github.com/openzipkin/zipkin
官网:https://zipkin.io/
官方文档:https://zipkin.io/pages/quickstart.html
Spring Cloud Sleuth
日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现了一种分布式追踪解决方案。
Github地址:https://github.com/spring-cloud/spring-cloud-sleuth
官网:https://spring.io/projects/spring-cloud
官方文档:https://docs.spring.io/spring-cloud-sleuth/docs/current/reference/html/
SkyWalking
SkyWalking 更是一个现代化的应用程序性能监控系统, 专为微服务、云原生和基于容器的 架构而设计。 用于从服务和云原生基础设施收集, 分析, 聚合及可视化数据。
Github地址:https://github.com/apache/skywalking
官网:https://skywalking.apache.org/
官方文档:https://skywalking.apache.org/docs/main/latest/readme/
中文文档:https://skyapm.github.io/document-cn-translation-of-skywalking/
分布式任务调度
Dolphin(持续维护)
Apache DolphinScheduler是一个分布式易扩展的可视化DAG工作流任务调度开源系统。解决数据研发ETL 错综复杂的依赖关系,不能直观监控任务健康状态等问题。以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作
Github地址:https://github.com/apache/dolphinscheduler
官网:https://dolphinscheduler.apache.org/
官方文档:https://dolphinscheduler.apache.org/en-us/docs/latest/user_doc/about/introduction.html
中文文档:https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/about/introduction.html
ElasticJob(持续维护)
ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案。 通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。 各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署。
Github地址:https://github.com/apache/shardingsphere-elasticjob
官网:https://shardingsphere.apache.org/elasticjob/
官方文档:https://shardingsphere.apache.org/elasticjob/current/en/overview/
中文文档:https://shardingsphere.apache.org/elasticjob/current/cn/overview/
XXL-JOB(很少维护)
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
Github地址:https://github.com/xuxueli/xxl-job
官网:https://www.xuxueli.com/index.html
中文文档:https://www.xuxueli.com/xxl-job/
分布式数据库中间件
MySQL Router
MySQL Router是MySQL官方提供的一个轻量级MySQL中间件,用于取代以前老版本的Mysql Proxy。可以在应用程序与MySQL服务器之间提供透明的路由方式。主要用以解决MySQL主从库集群的高可用、负载均衡、易扩展等问题。
Github地址:https://github.com/mysql/mysql-server/tree/8.0/router
官网:https://dev.mysql.com/
官方文档:https://dev.mysql.com/doc/mysql-router/8.0/en/
ShardingSphere
Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
Github地址:https://github.com/apache/shardingsphere
官网:https://shardingsphere.apache.org/
官方文档:https://shardingsphere.apache.org/document/current/en/overview/
中文文档:https://shardingsphere.apache.org/document/current/cn/overview/
Mycat
是Mycat社区开发的一款分布式关系型数据库(中间件),替代cober。它支持分布式SQL查询,兼容MySQL通信协议,以Java生态支持多种后端数据库,通过数据分片提高数据查询处理能力。
Mycat1 Github地址:https://github.com/MyCATApache/Mycat-Server
Mycat2 Github地址:https://github.com/MyCATApache/Mycat2
官网:https://mycatone.top/
官方文档:https://www.yuque.com/books/share/6606b3b6-3365-4187-94c4-e51116894695
Mycat1.x与Mycat2功能对比:https://www.yuque.com/books/share/6606b3b6-3365-4187-94c4-e51116894695/vm9gru
Atlas(基本不维护)
Atlas是由 Qihoo 360公司开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。
Github地址:https://github.com/Qihoo360/Atlas
官网:https://shardingsphere.apache.org/
官方文档:https://github.com/Qihoo360/Atlas/wiki
中文文档:https://github.com/Qihoo360/Atlas/blob/master/README_ZH.md