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