微服務實踐目錄,可以參見連接。
思想
在接收到一個新的新項目時,架構師的職責是建立項目的業務與技術實現之間的橋梁。在翻譯業務到技術實現的過程中需要進行業務建模、技術設計等方面的工作。業務建模和技術設計過程中都有各自領域的知識體系。基本上每個知識體系都是由上層的理論、概念和方法論的提供方向上的支撐,由下層的實施方法、實施工具進行具體工作的實施。
在微服務實踐系列文章中主要介紹在微服務實踐過程中可能會考慮到的方向、以及這些方向可供選擇的技術工具、并會涉及少量的架構設計理論知識。而在架構設計系列文章中會介紹架構理論、架構設計實踐、以及架構設計中的分析與評估方法。
因為本系列文章主要介紹的是技術工具的內容,就會根據技術工具的特性進行介紹。不過本系列文章中不會像網絡上其他的技術文章一樣以某項技術為維度進行文章編寫。而更像書本以技術的維度進行整理。以這種方式一方面是符合了我們的【實踐】題目,便于在實踐過程中使用技術工具組織整體架構。另一方面以技術方向而不是某一個技術實現,也是以一種自頂向下的思維方式進行說明(軟件研發人員一般會使用自底向上的視為方式)。
技術方向
對于微服務中技術的全局中可能會有很多門技術需要學習與掌握。這里以一張圖的方式為大家展示可能在微服務中遇到的技術與實現方向:
作者把微服務實踐中的技術方向有分了四部分:微服務管理,存儲技術,業務支持,DevOps。微服務管理是介紹分布式系統的技術實現部分。存儲技術獨立出來的意義在于存儲和大數據,人工智能等大型的獨立系統有關系。業務支持是闡述在業務實現過程中可能會用到的技術,但是不和通用的微服務技術相關的技術。DevOps是在微服務設計和敏捷的提倡下需要接受一切自動化的方式。
上圖中的淺綠色部分,是說明所有的技術方向。之后所有的文章都會按照這個規范進行編寫。右側每一列都是一項技術實現,這些技術實現可能會涵蓋不同的技術方向。所以,這里也會在下面的文章中在不同的技術方向上推薦不同的實現技術。例如:做數據庫與緩存同步的工具可選范圍不多的情況,我就只能推薦Gearman。
從圖中可以看到微服務技術關注的大概方向,基本上整理出來五個大方向。并在五個大方向上有相關的具體技術方向進行補充。現在基本上就缺具體的實現技術選型:
- 微服務管理
- 內容發布
CDN,分布式存儲等 - 遠程過程調用
RPC,RMI,JMS,AMQP, - 服務發現
DNS,zookeeper,spring eureka,spring consul,ETCD,REDIS - 服務注冊
DDNS,zookeeper,spring eureka,spring consul - 網關
Zuul,Kong,Nginx Plus,OpenResty,Spring Cloud Gateway - 負載均衡
LVS,Nginx,F5 - 高可用
Haproxy,keepalive - 服務編排
Netflix Conductor,uber/cadence,zeebe-io/zeebe,ing-bank/baker,Spring Cloud Zuul, Node-RED,ApiConfig - 統一配置
Spring Config,ctripcorp/apollo: Apollo,git,nginx,Consul,Netflix Archaius - 分布式任務管理
xxl-job,Elastic-Job, - 異步任務
AMQP,Spring Cloud,Dubbo - 高速緩存
Redis,Memcache,Mysql Memory DB,H2 - 前后端分離
Swagger,API Gateway - 服務降級
Dubbo,Spring Cloud Hystrix - 服務限流
Dubbo,Spring Cloud Hystrix - 服務熔斷
Dubbo,Spring Cloud Hystrix - 故障恢復
Docker,Swarm,K8s - 微服務治理
OpenSergo,Polaris - 事務管理
sage,fescar,gts,Narayana - 動態選舉
zookeeper - 用戶
用戶認證,權限管理,用戶計費,會話管理 - OpenAPI
Kong,APIgee - 對象存儲
minio,riakcs(亞馬遜S3技術),ceph - 事件驅動
EventBus, spring event - 并發處理
akka,Actor - 全局唯一性編碼
UUID,SetNX,雪花算法, - 規則引擎
Drools
- 存儲技術
- 結構化數據存儲
Postgresql,(不推薦Mysql) - 半結構化數據存儲
redis,MongoDB - 無結構數據存儲
hdfs,mfs,fastdfs
- 業務支持
LBS
木有開源滴。AI
BigData
全文檢索
Lucene靜態化
freemark智能推薦
mahout用戶跟蹤
木有開源滴。IDaaS(身份認證及服務)
暫未找到SEO/SEM
暫未找到網絡爬蟲
Python特性開關
Flagr,Togglz,FF4J,Fitchy,Flip租戶管理
mybaits-plus,Citus,mycat第三方支付
需要聚合支付。-
可視化
Hue,impala,DataDeck,Tableau,Redash,Metabase,Superset- 數據可視化
jtablesaw / tablesaw
Processing - 可視化編程
CoatiSoftware / Sourcetrail - 可視化控件
Echarts,D3.js,Tableua - 前端低代碼
20+個可視化搭建工具,一次玩個夠
- 數據可視化
信息推送
木有開源滴。
- 質量
- 代碼掃描
- 自動測試
- 混沌實驗
ChaosBlade,Chaos Monkey
- 混沌實驗
- DevOps
運行環境
基礎環境都在這里。
Terraform(基礎設施即代碼)升級
flagr部署
Puppet、Chef、Ansible和SaltStack版本管理
scm日志管理
elk,flume監控
Zabbix、Nagios、Open-Falcon可視化
全局可視化系統持續交付
Spinnaker指標監控
Telegraf InfluxDB Grafana應用性能
lb的使用情況調用鏈
zipkin,pinpiont,skywalking接口管理
swagger,yapi,rap2
總結
這里提供了完善的分布式系統,微服務,SOA的技術方向體系。之后可以方便的從本系列中選擇最優工具加入到業務系統中。
參考:
Spring Cloud 體系
Netflix OSS
BAT 程序員們常用的開發工具
數據可視化的開源方案: Superset vs Redash vs Metabase (一)