我是一名雲API開發人員和架構師,目前正致力於爲美國的大型零售客戶提供基於Google GCP的微服務。java
過渡/實施微服務給組織帶來了重大挑戰。基於我對生產中的微服務的曝光,我已經肯定了這些挑戰和解決方案。數據庫
我在2018年6月寫這篇文章。目前,微服務架構還沒有成熟到足以徹底解決全部現有挑戰,可是,開源社區和IT產品公司正試圖解決全部這些未解決的問題。關於這一主題的全部新研究都是基於尋找新挑戰的解決方案。小程序
這些是微服務架構和提出的解決方案的十大挑戰:設計模式
1.數據同步 緩存
– 咱們使用事件源代碼架構來使用異步消息傳遞平臺解決此問題。傳奇設計模式能夠應對這一挑戰。安全
2.安全性 服務器
– API網關能夠解決這些挑戰。Kong很是受歡迎,而且是開源的,而且正在被許多公司用於生產。還能夠使用JWT令牌,Spring Security和Netflix Zuul / Zuul2爲API安全性開發自定義解決方案。還有企業解決方案,如Apigee和Okta(兩步認證)。Openshift用於公共雲安全的頂級功能,如基於Red Hat Linux Kernel的安全性和基於命名空間的app-to-app安全性。架構
3.版本控制 app
– 這將由API註冊表和發現API使用動態Swagger API處理,動態Swagger API能夠動態更新並與服務器上的使用者共享。異步
4. 發現
– 這將由Kubernetes和OpenShift等API發現工具解決。它也能夠在代碼級使用Netflix Eureka完成。可是,使用業務流程層執行此操做會更好,而且能夠經過這些工具進行管理,而不是經過代碼和配置進行維護。
5.數據過時
– 應始終更新數據庫以提供最新數據。API將從最近更新的數據庫中獲取數據。還能夠爲數據庫中的每一個記錄添加時間戳條目,以檢查和驗證最近的數據。能夠根據業務需求使用可定義的驅逐策略來使用和自定義緩存。
6.調試和記錄
– 有多種解決方案。能夠經過將日誌消息推送到異步消息傳遞平臺(如Kafka,Google PubSub等)來使用外化日誌記錄。客戶端能夠在標頭中爲REST API提供關聯ID,以跟蹤全部pod / Docker容器中的相關日誌。此外,能夠使用IDE或檢查日誌在每一個微服務上單獨完成本地調試。
7.測試
– 能夠經過模擬REST API或集成/依賴API來解決此問題,這些API不可用於使用WireMock,BDD,Cucumber,集成測試,使用JMeter進行性能測試以及任何良好的分析工具(如Jprofiler)進行測試, DynaTrace,YourToolKit,VisualVM等
8.監控
– 監控能夠使用開源工具,如Prometheus與Grafana結合使用,建立儀表和矩陣,Kubernetes / OpensShift,Influx DB,Apigee,結合Grafana和Graphite。
9. DevOps支持
– 使用最早進的DevOps工具(如GCP,Kubernetes和OpenShift與Jenkins)能夠解決微服務部署和支持相關的挑戰。
10.容錯
– 若是給定SLA / ETA的API沒有響應,Netflix Hystrix可用於斷開電路。
Java的架構師歷程mush 專一於爲java的工程師提供技術乾貨的文章平臺,使其從小牛歷練到大拿,在架構師的路上一路前行,共學習,共進步; 小程序中更多無廣告 優質文章,每個月送書, 歡迎關注!後臺回覆的Java技術關鍵字獲取更多學習資源。