大型架構之科普工具篇

 

 

 

底部更多詳情圖....html

 

 

I.1 Java Spring Boot

適合構建微服務系統前端

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

其它語言:  .net core 、 Go 等java

 

I.2 Jenkins

自動CI程序,持續集成linux

  • 開源免費
  • 跨平臺,支持全部的平臺(本人是安裝在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

當系統中出現「生產「和「消費「的速度或穩定性等因素不一致的時候,就須要消息隊列,做爲抽象層,彌合雙方的差別。「 消息 」是在兩臺計算機間傳送的數據單位。消息能夠很是簡單,例如只包含文本字符串;也能夠更復雜,可能包含嵌入對象。消息被髮送到隊列中,「 消息隊列 」是在消息的傳輸過程當中保存消息的容器 。nginx

  • 解耦
  • 冗餘
  • 擴展性
  • 靈活性 & 峯值處理能力
  • 可恢復性
  • 送達保證
  • 排序保證
  • 緩衝
  • 理解數據流
  • 異步通訊

 

 

 

 

I.6 SQL DB

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

MySQL/PostgreSQL是傳統關係型數據庫的表明。git

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

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

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

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

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

相關文章
相關標籤/搜索