php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...
為了部署到生產環境中,需要考慮三個關鍵的質量屬性:安全性,可配置性和可觀測性。
開發安全的服務
需要實現安全性的四個方面:
身份驗證。
訪問授權。驗證是否允許訪問主體對指定數據完成請求的操作。
審計。跟蹤用戶在應用中執行的操作。
安全的進程間通信。最好采用傳輸層安全性(TLS)加密。
在微服務架構中實現安全性
由API Gateway處理身份驗證。在請求轉發給服務之前,就進行身份驗證。這樣的好處是:
身份驗證集中于一個服務,安全漏洞的可能性要小的多。
身份驗證集中于一個服務,其他服務更簡單,更關注于自己的業務。
除了身份驗證,還需要考慮訪問授權。可能實現的位置:
API Gateway。在這里實現的好處是,集中管理,弊端是API Gateway和服務之間產生耦合
在各個服務,實現訪問授權。
設計可配置的服務
可以使用外部化配置模式為服務在運行時提供適當的配置屬性。實現的方式有兩種:
推送模型:部署基礎設施,通過類似操作系統環境變量或者配置文件的方式,將配置屬性傳遞給服務實例。例如指定Docker容器的環境變量,但是重新配置正在運行的服務可能很難。
拉去模型:服務實例從配置服務器讀取他所需要的配置屬性。建立配置服務的方式很多,例如版本控制系統(Git),SQL或者NoSQL數據庫,Spring Cloud Config Server服務
使用專屬的配置服務器,好處在于:
集中配置
支持敏感數據的透明加解密
動態重新配置。服務可以輪詢檢測屬性值,并重新配置自身。
設計可觀測的服務
應用程序部署到生產環境中,需要了解服務實例的行為和健康狀況,需要能夠跟蹤和可是化服務狀態,并在服務出現問題的時候,生成告警。需要輕松查看日志等信息,便于排查故障。
需要以下模式,支持可觀測服務:
健康檢查API。例如Spring Boot Actuator Java庫實現了health檢查接口。
日志聚合。日志聚合流水線,將所有付五十里的日志發送給集中式日志服務器。可以在集中式日志服務器上,查看、搜索和分析日志。Java流行的三個日志庫:Logback、log4j和JUL。流行的日志記錄基礎設施是ELK套件,Elasticsearch,Logstash和Kibana。
分布式追蹤。為每個服務之間的跳轉的外不請求分配唯一ID,并跟蹤請求。追蹤工具類庫中,Spring Cloud Sleuth就是一個基于AOP技術的一個優秀框架。對于分布式追蹤服務器,比較流行的是Open Zipkin。
異常跟蹤。
應用程序指標。有兩種方式向指標服務提供數據,推送或者拉取。推送:實例通過調用API將指標發送給服務,例如AWS Cloudwatch;拉取:通過服務的API,從服務實例檢索指標信息,例如Prometheus。
審核日志記錄
基于微服務基底模式開發服務
安全性,可配置性和可觀測性,是微服務架構需要解決的共性問題。一種方式是,在微服務基底上構建服務,由微服務基底處理這些問題。
微服務基底是一個框架或者一組框架,流入JVM可以使用Spring Boot和Spring Cloud作為微服務基底,GoLang可以使用Go Kit或Micro作為微服務基底。
這樣做的弊端,限制了開發者使用的技術棧
從微服務基底到服務網格
服務網格,是網絡基礎設施,把所有進出服務的網絡流量通過一個網絡層進行路由,這個網絡層負責解決包括斷路器、分布式追蹤、服務發現、負載均衡和基于規則的流量路由等具有共性的需求。
當前服務網格的實現:
Istio
Linkerd
Conduit
有疑問加站長微信聯系(非本文作者)
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的php微服务架构设计模式,《微服务架构设计模式》读书笔记---第十一章:开发面向生产环境的微服务应用...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle导出脚本文件怎么打开,Win
- 下一篇: php返回null接收的是空字符串,求大