大型架構之科普工具篇


 

 

 

底部更多詳情圖....

 

 

I.1 Java Spring Boot

適合構建微服務系統

  • 使用 Spring 項目引導頁面可以在幾秒構建一個項目
  • 方便對外輸出各種形式的服務,如 REST APIWebSocketWebStreamingTasks
  • 非常簡潔的安全策略集成
  • 支持關系數據庫和非關系數據庫
  • 支持運行期內嵌容器,如 TomcatJetty
  • 強大的開發包,支持熱啟動
  • 自動管理依賴
  • 自帶應用監控
  • 支持各種 IED,如 IntelliJ IDEA NetBeans

其它語言:  .net core 、 Go 等

 

I.2 Jenkins

自動CI程序,持續集成

  • 開源免費
  • 跨平台,支持所有的平台(本人是安裝在Ubuntu14.04上的,使用jenkins docker鏡像沒有成功)
  • master/slave支持分布式的build
  • web形式的可視化的管理頁面
  • 安裝配置超級簡單
  • tips及時快速的幫助
  • 已有的幾百個插件

 

I.3 GitLab

  • 一個自托管的Git項目倉庫,可通過Web界面進行訪問公開的或者私人項目安裝。 
    它擁有與GitHub類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。 
    團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用,便於日后有需要的時候進行查找。
  • Dokcer
  • Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metalOpenStack 集群和其他的基礎應用平台。 
  • Docker通常用於如下場景:
  • web應用的自動化打包和發布;
  • 自動化測試和持續集成、發布;
  • 在服務型環境中部署和調整數據庫或其他的后台應用;
  • 從頭編譯或者擴展現有的OpenShiftCloud Foundry平台來搭建自己的PaaS環境。

 

I.4 Kubernetes

  • Kubernetes是容器集群管理系統,是一個開源的平台,可以實現容器集群的自動化部署、自動擴縮容、維護等功能。
  • 通過Kubernetes你可以:
  • 快速部署應用
  • 快速擴展應用
  • 無縫對接新的應用功能
  • 節省資源,優化硬件資源的使用

 

 

I.5 MQ

當系統中出現“生產“和“消費“的速度或穩定性等因素不一致的時候,就需要消息隊列,作為抽象層,彌合雙方的差異。“ 消息 ”是在兩台計算機間傳送的數據單位。消息可以非常簡單,例如只包含文本字符串;也可以更復雜,可能包含嵌入對象。消息被發送到隊列中,“ 消息隊列 ”是在消息的傳輸過程中保存消息的容器 。

  • 解耦
  • 冗余
  • 擴展性
  • 靈活性 & 峰值處理能力
  • 可恢復性
  • 送達保證
  • 排序保證
  • 緩沖
  • 理解數據流
  • 異步通信

 

 

 

 

I.6 SQL DB

  • 數據庫(Database)是按照數據結構來組織、存儲和管理數據的建立在計算機存儲設備上的倉庫。
  • 簡單來說是本身可視為電子化文件櫃——存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。
  • 經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的倉庫,並根據管理的需要進行相應的處理。

MySQL/PostgreSQL是傳統關系型數據庫的代表。

HBase是Big Tables技術的代表(行索引,列存儲)。

Neo4j(http://www.neo4j.org/)是圖數據庫代表,用來存儲復雜、多維度的圖結構數據。

Redis是基於Key-Value的NoSQL代表,有Redis-to-go提供存儲服務。

MongoDB/CouchDB是基於Document的NoSQL代表,Couchbase是Document/Key-Value技術的融合。

VoltDB是NewSQL的代表,具備數據一致性和良好的擴展性,性能宣稱是MySQL的數十倍以上。

TiDB 是國內 PingCAP 團隊開發的一個分布式 SQL 數據庫。其靈感來自於 Google 的 F1 和 Google spanner, TiDB 支持包括傳統 RDBMS 和 NoSQL 的特性。

 

I.7 TICK stack

InfluxDB

時序數據庫工具。

Telegraf

是一個數據收集和入庫的工具。提供了很多 input 和 output 插件,比如收集本地的 cpu、load、網絡流量等數據,然后寫入 InfluxDB 或者 Kafka 等。

Chronograf

繪圖工具

Kapacitor

Kapacitor 是 InfluxData 家的告警工具,通過讀取 InfluxDB 中的數據,根據 DLS 類型配置 TickScript 來進行告警。

I.8 Keepalived

keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。

keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議

虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backupmaster上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級選舉一個backupmaster。這樣的話就可以保證路由器的高可用了。

keepalived主要有三個模塊,分別是corecheckvrrpcore模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的

 

I.9  Harbor

Harbor是一個用於存儲和分發Docker鏡像的企業級Registry服務器。

I.10  Ignite  /  Redis

Apache Ignite 內存數據組織框架是一個高性能、集成化和分布式的內存計算和事務平台,用於大規模的數據集處理,比傳統的基於磁盤或閃存的技術具有更高的性能,同時他還為應用和不同的數據源之間提供高性能、分布式內存中數據組織管理的功能。

序號

對比項目

Apache Ignite

Redis

1

JCache (JSR 107)

Ignite完全兼容JCacheJSR107)緩存規范

不支持

2

ACID事務

Ignite完全支持ACID事務,包括樂觀和悲觀並發模型以及READ_COMMITTED, REPEATABLE_READSERIALIZABLE隔離級別。

Redis提供了客戶端樂觀事務的有限支持,在並發更新情況下,客戶端需要手工重試事務。

3

數據分區

Ignite支持分區緩存,類似於一個分布式哈希,集群中的每個節點都存儲數據的一部分,在拓撲發生變化的情況下,Ignite會自動進行數據的再平衡。

Redis沒有提供分區,但是提供了副本的分片,使用分片非常死板,並且不管是客戶端還是服務端,每當拓撲發生變化時都需要一系列相當復雜的手工步驟。

4

全復制

Ignite支持緩存的復制,集群中的每個節點的每個鍵值對都支持。

Redis不提供對全復制的直接支持。

5

原生對象

Ignite允許用戶使用自己的領域對象模型並且提供對任何Java/Scala, C++.NET/C#數據類型(對象)的原生支持,用戶可以在Ignite緩存中輕易的存儲任何程序和領域對象。

Redis不允許用戶使用自定義數據類型,僅支持預定義的基本數據結構集合,比如SetListArray以及一些其他的。

6

客戶端側(近)緩存

Ignite提供對於最近訪問數據的客戶端側緩存的直接支持。

不支持

7

(服務端側)並置處理

Ignite支持在服務器端靠近數據以並置的方式直接執行任何Java, C++.NET/C#代碼。

Redis通常沒有任何並置處理的能力,服務器端基本只支持LUA腳本語言,服務器端不直接支持Java, .NET,或者C++代碼執行。

8

SQL查詢

Ignite支持完整SQLANSI-99)語法以查詢內存中的數據。

Redis不支持任何查詢語言,只支持客戶端緩存API

9

持續查詢

Ignite提供對客戶端和服務器端持續查詢的支持,用戶可以設置服務器端的過濾器來減少和降低傳輸到客戶端的事件數量。

Redis提供客戶端基於鍵的事件通知的支持,但是他不提供服務器端的過濾器,因此造成了在客戶端和服務器端中更新通知網絡流量的顯著增加。

10

數據庫集成

Ignite可以自動集成外部的數據庫-RDBMS, NoSQL,HDFS

Redis無法與外部數據庫集成。

 

I.11  ELK

ELKElasticsearchLogstashKibana三部分組件組成;

Elasticsearch是個開源分布式搜索引擎,它的特點有:分布式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。

Logstash是一個完全開源的工具,它可以對你的日志進行收集、分析,並將其存儲供以后使用

kibana 是一個開源和免費的工具,它可以為 Logstash ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數據日志。

 

I.12  Kong(Nginx)

Kong是一款基於Nginx_Lua模塊寫的高可用,易擴展由Mashape公司開源的API Gateway項目。由於Kong是基於Nginx的,所以可以水平擴展多個Kong服務器,通過前置的負載均衡配置把請求均勻地分發到各個Server,來應對大批量的網絡請求。

Kong主要有三個組件:

Kong Server :基於nginx的服務器,用來接收API請求。

Apache Cassandra/PostgreSQL :用來存儲操作數據。

Kong dashboard:官方推薦UI管理工具,當然,也可以使用 restfull 方式 管理admin api

Kong采用插件機制進行功能定制,插件集(可以是0n個)在API請求響應循環的生命周期中被執行。插件使用Lua編寫,目前已有幾個基礎功能HTTP基本認證、密鑰認證、CORS Cross-origin Resource Sharing,跨域資源共享)、TCPUDP、文件日志、API請求限流、請求轉發以及nginx監控。

 

I.13  Openstack

OpenStack  +  KVM

OpenStack:開源管理項目

OpenStack是一個旨在為公共及私有雲的建設與管理提供軟件的開源項目。它不是一個軟件,而是由幾個主要的組件組合起來完成一些具體的工作。OpenStack由以下五個相對獨立的組件構成:

OpenStack Compute(Nova)是一套控制器,用於虛擬機計算或使用群組啟動虛擬機實例;

OpenStack鏡像服務(Glance)是一套虛擬機鏡像查找及檢索系統,實現虛擬機鏡像管理;

OpenStack對象存儲(Swift)是一套用於在大規模可擴展系統中通過內置冗余及容錯機制,以對象為單位的存儲系統,類似於Amazon S3;

OpenStack Keystone,用於用戶身份服務與資源管理以及

OpenStack Horizon,基於Django的儀表板接口,是個圖形化管理前端。

這個起初由美國國家航空航天局和Rackspace2010年末合作研發的開源項目,旨在打造易於部署、功能豐富且易於擴展的雲計算平台。OpenStack項目的首要任務是簡化雲的部署過程並為其帶來良好的可擴展性,企圖成為數據中心的操作系統,即雲操作系統。 

KVM:開放虛擬化技術

KVM(Kernel-based Virtual Machine)是一個開源的系統虛擬化模塊,它需要硬件支持,如Intel VT技術或者AMD V技術,是基於硬件的完全虛擬化,完全內置於Linux

2008年,紅帽收購Qumranet獲得了KVM技術,並將其作為虛擬化戰略的一部分大力推廣,在2011年發布RHEL6時支持KVM作為唯一的hypervisorKVM主打的就是高性能、擴展性、高安全,以及低成本。

 

I.14  Disconf

專注於各種「分布式系統配置管理」的「通用組件」和「通用平台」, 提供統一的「配置管理服務」。

I.15  Apollo

Apollo是攜程框架部門研發的配置管理平台,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,並且具備規范的權限、流程治理等特性。

服務端基於Spring BootSpring Cloud開發,打包后可以直接運行,不需要額外安裝Tomcat等應用容器。

 

I.16  gRPC

gRPC 是一個高性能、開源和通用的 RPC 框架,面向移動和 HTTP/2 設計。目前提供 CJava Go 語言版本,分別是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP C# 支持.

gRPC 基於 HTTP/2 標准設計,帶來諸如雙向流、流控、頭部壓縮、單 TCP 連接上的多復用請求等特。這些特性使得其在移動設備上表現更好,更省電和節省空間占用。

 

I.17  Canal 

canal是阿里巴巴旗下的一款開源項目,純Java開發。基於數據庫增量日志解析,提供增量數據訂閱&消費,目前主要支持了MySQL(也支持mariaDB)。

基於日志增量訂閱&消費支持的業務:

  • 數據庫鏡像
  • 數據庫實時備份
  • 多級索引 (賣家和買家各自分庫索引)
  • search build
  • 業務cache刷新
  • 價格變化等重要業務消息

 

 

I.18  Spark streaming

Spark Streaming Spark核心API的一個擴展,可以實現高吞吐量的、具備容錯機制的實時流數據的處理。支持從多種數據源獲取數據,包括Kafk、Flume、Twitter、ZeroMQ、Kinesis 以及TCP sockets,從數據源獲取數據之后,可以使用諸如map、reduce、join和window等高級函數進行復雜算法的處理。

 

I.19  SonarQube

Sonar是一個用於代碼質量管理的開源平台,用於管理源代碼的質量,可以從七個維度檢測代碼質量

通過插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十幾種編程語言的代碼質量管理與檢測

I.20  DataX

 DataX 是一個異構數據源離線同步工具,致力於實現包括關系型數據庫(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各種異構數據源之間穩定高效的數據同步功能。

I.21  禪道管理 / Jira

禪道功能
1)產品管理:產品、需求、計划、發布、路線圖等功能。
2)項目管理:項目、任務、團隊、build、燃盡圖等功能。
3)質量管理:bug、測試用例、測試任務、測試結果等功能。
4)文檔管理:產品文檔庫、項目文檔庫、自定義文檔庫等功能。
5)事務管理:todo管理,我的任務、我的Bug、我的需求、我的項目等個人事務管理功能。
6)組織管理:部門、用戶、分組、權限等功能。
7)統計功能:豐富的統計表。
8)搜索功能:通過搜索找到相應的數據。


JIRA功能
1)問題追蹤和管理(問題類型包括New Feature-新功能、Bug-缺陷、Task-任務、 Improvement-改進 四種);
2)問題跟進情況的分析報告;
3)項目類別管理功能;
4)組件/模塊負責人功能;
5)項目email地址功能;
6)無限制的工作流。

 

I.22  XXJOB

XXL-JOB是一個輕量級分布式任務調度框架,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。

  • 簡單:支持通過Web頁面對任務進行CRUD操作,操作簡單,一分鍾上手;
  • 動態:支持動態修改任務狀態、暫停/恢復任務,以及終止運行中任務,即時生效;
  • 調度中心HA(中心式):調度采用中心式設計,“調度中心”基於集群Quartz實現並支持集群部署,可保證調度中心HA;
  • 執行器HA(分布式):任務分布式執行,任務"執行器"支持集群部署,可保證任務執行HA;
  • 注冊中心: 執行器會周期性自動注冊任務, 調度中心將會自動發現注冊的任務並觸發執行。同時,也支持手動錄入執行器地址;
  • 彈性擴容縮容:一旦有新執行器機器上線或者下線,下次調度時將會重新分配任務;
  • 路由策略:執行器集群部署時提供豐富的路由策略,包括:第一個、最后一個、輪詢、隨機、一致性HASH、最不經常使用、最近最久未使用、故障轉移、忙碌轉移等;
  • 故障轉移:任務路由策略選擇"故障轉移"情況下,如果執行器集群中某一台機器故障,將會自動Failover切換到一台正常的執行器發送調度請求。
  • 失敗處理策略;調度失敗時的處理策略,策略包括:失敗告警(默認)、失敗重試;
  • 失敗重試:調度中心調度失敗且啟用"失敗重試"策略時,將會自動重試一次;執行器執行失敗且回調失敗重試狀態時,也將會自動重試一次;
  • 阻塞處理策略:調度過於密集執行器來不及處理時的處理策略,策略包括:單機串行(默認)、丟棄后續調度、覆蓋之前調度;
  • 分片廣播任務:執行器集群部署時,任務路由策略選擇"分片廣播"情況下,一次任務調度將會廣播觸發集群中所有執行器執行一次任務,可根據分片參數開發分片任務;
  • 動態分片:分片廣播任務以執行器為維度進行分片,支持動態擴容執行器集群從而動態增加分片數量,協同進行業務處理;在進行大數據量業務操作時可顯著提升任務處理能力和速度。
  • 事件觸發:除了"Cron方式"和"任務依賴方式"觸發任務執行之外,支持基於事件的觸發任務方式。調度中心提供觸發任務單次執行的API服務,可根據業務事件靈活觸發。
  • 任務進度監控:支持實時監控任務進度;
  • Rolling實時日志:支持在線查看調度結果,並且支持以Rolling方式實時查看執行器輸出的完整的執行日志;
  • GLUE:提供Web IDE,支持在線開發任務邏輯代碼,動態發布,實時編譯生效,省略部署上線的過程。支持30個版本的歷史版本回溯。
  • 腳本任務:支持以GLUE模式開發和運行腳本任務,包括Shell、Python、NodeJS等類型腳本;
  • 任務依賴:支持配置子任務依賴,當父任務執行結束且執行成功后將會主動觸發一次子任務的執行, 多個子任務用逗號分隔;
  • 一致性:“調度中心”通過DB鎖保證集群分布式調度的一致性, 一次任務調度只會觸發一次執行;
  • 自定義任務參數:支持在線配置調度任務入參,即時生效;
  • 調度線程池:調度系統多線程觸發調度運行,確保調度精確執行,不被堵塞;
  • 數據加密:調度中心和執行器之間的通訊進行數據加密,提升調度信息安全性;
  • 郵件報警:任務失敗時支持郵件報警,支持配置多郵件地址群發報警郵件;
  • 推送maven中央倉庫: 將會把最新穩定版推送到maven中央倉庫, 方便用戶接入和使用;
  • 運行報表:支持實時查看運行數據,如任務數量、調度次數、執行器數量等;以及調度報表,如調度日期分布圖,調度成功分布圖等;
  • 全異步:系統底層實現全部異步化,針對密集調度進行流量削峰,理論上支持任意時長任務的運行;

 

I.23 Salt stack

一種全新的基礎設施管理方式,部署輕松,在幾分鍾內可運行起來,擴展性好,很容易管理上萬台服務器,速度夠快,服務器之間秒級通訊。

salt底層采用動態的連接總線, 使其可以用於編配, 遠程執行, 配置管理等等.

I.24  Istio

Istio 作為用於微服務服務聚合層管理的新銳項目,是 Google、IBM、Lyft(海外共享出行公司、Uber勁敵) 首個共同聯合開源的項目,提供了統一的連接,安全,管理和監控微服務的方案。

目前首個測試版是針對 Kubernetes 環境的,社區宣稱在未來幾個月內會為虛擬機和 Cloud Foundry 等其他環境增加支持。 Istio 將流量管理添加到微服務中,並為增值功能(如安全性,監控,路由,連接管理和策略)創造了基礎。

  • HTTP、gRPC 和 TCP 網絡流量的自動負載均衡;
  • 提供了豐富的路由規則,實現細粒度的網絡流量行為控制;
  • 流量加密、服務間認證,以及強身份聲明;
  • 全范圍(Fleet-wide)的策略執行;
  • 深度遙測和報告。

 

 

 

 

架構篇

 

 

 

 

 

 

 

 

安全篇

 

 

 

基礎篇

Salt Stack + OpenStack + KVM + Kubernetes + Istio

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM