成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自動化微服務治理

開發 架構 自動化
關于『設計一個微服務治理的工具』這個想法,我已經醞釀很久了。但是,你懂的,又是因為種種原因,我擱置了蠻久了。

[[337133]]

關于『設計一個微服務治理的工具』這個想法,我已經醞釀很久了。但是,你懂的,又是因為種種原因,我擱置了蠻久了。最近,剛好因為在研究『架構適應度函數』,所以,我有了一個新的想法。微服務架構治理,看似和架構適應度函數并沒有啥關系。但是,我設想的是一個用于『微服務治理的架構適應度函數』。

你可以把它想象為一個用于幫助更好開發微服務應用的工具。順便一提,因為手頭上并沒有這樣的場景。所以,我先把我的相關思路記載下來,方便于后續集成。而且大部分功能已經在 Coca 中實現,我會將部分的功能再交由 Coca 來實現。如對于,數據庫的自動化分析 —— 已經有 Tequila 進行了大量的自動化。

 

微服務粒度適應度函數

對于微服務架構來說,最令人頭疼的一個問題就是微服務粒度。從最源頭上,我們應該遵循『兩個披薩團隊』這個定律,即:

單個服務的設計,所有參與人從設計、開發、測試、運維所有人加起來 只需要 2 個披薩就夠了。

但是,事實上從國內大中小公司的實踐情況來看,并非如此。往往是一個團隊維護了超過其自身數量的微服務,即 6 個開發人員可能維護了 8 個微服務。大家常犯的一個錯誤是:通過技術維度而非業務維度劃分微服務。關于這部分的自動化,我暫時找不到頭緒。但是,我們可以判斷兩個微服務是否可以合并:即基于 Git 日志的微服務粒度合理性分析。

  • 服務提交人數。通過 git log 來查看單個微服務的提交情況
  • 變更頻率。尋找多個模塊之間,是否存在大量同時變更的情況
  • 需求關聯度。通過識別提交信息規范,來識別多個微服務、模塊、類是否存在經常同時變更
    • 前提:匹配提交規范。

在這個時候,我們只需要使用和 coca git 類似的解析函數,就能達到類似的效果。

API 的適應度函數

 

在 Coca 中已經內置了 API 分析相關的功能,可以支持識別 Spring 的 API 注解,以及服務聲明的 API 方式,同時分析調用關系等等。所以,我就不需要開發一個這樣的功能了,只需要稍微完善一下,補充一些分值情況。對于 API 設計來說,這個工具要做這么幾件事:

  • API 命名的規范。如不一致的命名方式
  • 參數合理性。如過多或者過少、是否不應該出現在 URL 中。
  • 是否符合 RESTful 規范。如 URL 中不應該出現 get 和 post 等字眼,是否所有的 API 都是 post。
  • 是否出現跨服務使用相同的資源前綴。

對于大部分的公司來說,要做到 RESTful 的第一級都相當的困難。

數據庫表適應度函數

 

微服務把服務間調用從函數調用變成了遠程調用,這也意味著,我們并不能從 A 服務直接訪問 B 服務的數據庫,而是通過訪問 B 服務的接口,借助它去訪問數據庫。但是,在某些場景下,A 和 B 是需要共用數據庫(比如說,收費的 Oracle 數據庫實例),但是我們需要強制性的限制 A 和 B 服務對于表的訪問。所以,我們需要分析多個服務之間是否存在對于同一個表的修改,又或者是存在對于多個表的修改。

  1. 表和服務關系維護。掃描 MyBatis 等這一類的工具,生成表和服務關系維護
  2. 實現『數據庫表-映射服務』的快照測試。

簡單來說,我們的工具在這一部分所要做的事情是:每次代碼提交時,進行自動化地掃描,生成一個快照。剛其與存儲的快照進行對比,判斷數據庫是否有問題。隨后設置一個合理的調優公式,也就是這部分的架構適應度函數。

分層架構適應度函數

在解決了表面的問題之后,我們可以嘗試達到整潔架構這一目的。對于分層架構來說,我們要做的事情可能會稍微復雜一下。不過,好在復雜的調用關系識別,已經由 Coca 實現了。于是乎,對于我們的分層架構適應度函數,只需要做到這么一些事情:

微服務之間是否存在函數調用?

  1. 單個服務的所有 API 是否在同一個包內,如 controller。
  2. 是否存在不合理的 common、util 模塊。
  3. 對于三層包架構遷移到整潔架構的改進可視化。
  4. 簡單來說,就是將《系統重構與遷移指南》一書中記載的部分,通過自動化的方式進行識別。

數據結構適應度函數

 

關于數據結構/數據模型,已經有一些工具可以做類似的事情。對于微服務架構來說,我們所要做的一些判斷是:

  • 不合理的耦合。如果一個結構體/類同時被大量的其它類調用,必然有一定的不合理之處。
  • 過大的模型。值得注意的是,在一些大數據的場景下,這個反而是正確的
  • 過于復雜的嵌套。
  • 沒有行為的模型。

然后,針對于一些不同的使用情況,還存在一些不一樣的識別模式。

模型分析

在某些特定的場景之下,團隊會將共用的模型抽取到公共的模塊中,提供給多個微服務使用。這種模式本身可能是有問題的,因為在不同的限界上下文里,它些模型本身不應該是一致的。

相似度分析

考慮到復用和耦合之間的關系,這里不會建議它們共用的。不同服務之間需要一定的 copy/paste,但是需要考慮更好的方式,如采用類似于 proto 這樣的 DSL 生成方式。同時,通過 DDD 的方式進行管理 —— 針對于不同的相似類型,有更好的命名方式。

其它細節

 

我們還要做好一些基礎設施,比如對于模塊的處理:

模塊標志

  • build.xml
  • gradle
  • pom.xml
  • bazel
    • 模塊歸屬權
    • 需求關聯
    • 提交信息識別(可輸入式正則關系,配置化)
    • 記錄包-需求-服務關系
    • 聚類分析
    • ……

嗯,這些都不是容易的事。

結論

 

你的微服務架構適應度函數呢?

本文轉載自微信公眾號「phodal」,可以通過以下二維碼關注。轉載本文請聯系phodal公眾號。

 

責任編輯:武曉燕 來源: phodal
相關推薦

2020-08-31 22:05:53

Kubernetes微服務系統

2020-01-16 10:25:16

云計算云治理IT

2017-12-07 15:36:48

數字化大數據數據治理

2021-09-17 15:56:14

數據平臺自動化

2021-02-09 08:43:18

云原生服務自動化

2024-12-10 09:15:39

2020-09-29 07:00:00

微服務API架構

2017-12-17 21:58:18

2022-08-24 10:01:57

云原生容器

2021-05-07 08:03:15

微服務JenkinsGitHub項目

2009-11-30 17:12:57

BMC

2014-11-25 15:02:01

客服系統

2023-05-04 07:27:20

NLP 算法微服務治理

2020-04-26 09:00:00

微服務架構軟件開發

2018-07-13 06:46:35

數據中心自動化微服務

2022-02-10 12:04:45

網絡安全自動化

2021-12-03 10:30:25

WOT技術峰會技術

2018-11-07 10:00:00

微服務Service MesIstio

2024-06-07 14:54:55

2020-12-28 11:52:36

微服務數據中臺去中心化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美激情 一区 | 欧美中文字幕一区 | 日韩综合在线 | 91资源在线播放 | 香蕉91| 日一区二区 | 亚洲国产成人精品女人 | 99精品久久久 | 日韩成人免费视频 | 亚洲精品一区二区三区丝袜 | 国产综合精品一区二区三区 | 狠狠干五月天 | 精品综合在线 | 天天玩天天干天天操 | 色网站在线 | 欧美黑人国产人伦爽爽爽 | 亚洲精品二区 | 精品在线99| 国产精品久久久久久模特 | 成人精品久久 | 亚洲三区在线观看 | 国产精品我不卡 | 免费国产一区 | 国产精品欧美一区二区三区不卡 | 噜噜噜噜狠狠狠7777视频 | 日韩中文字幕一区二区 | 国产精品亚洲精品 | 久草免费在线视频 | 国产精品欧美日韩 | 365夜爽爽欧美性午夜免费视频 | 久久国产精彩视频 | 综合久| 国产精品久久久久久久午夜片 | 日韩欧美视频在线 | 日一区二区 | 欧美在线一区二区三区 | 欧洲高清转码区一二区 | 欧美一区二区免费 | 亚洲欧美中文日韩在线v日本 | 天天拍天天操 | 天天看天天操 |