一、基礎 微服務架構:把單一的應用劃分為一組小的服務,每個服務都是業務屬性的獨立單元,能夠獨立開發、運行、測試、部署。 1、微服務劃分:單一職責原則 2、輕量級通迅:平臺無關,語言無關,xml,json,http rest 3、每個服務獨立開發、測試、構建、部署 4、進程隔離:高度自治 二、實踐: ...
一、基礎
微服務架構:把單一的應用劃分為一組小的服務,每個服務都是業務屬性的獨立單元,能夠獨立開發、運行、測試、部署。
1、微服務劃分:單一職責原則
2、輕量級通迅:平臺無關,語言無關,xml,json,http rest
3、每個服務獨立開發、測試、構建、部署
4、進程隔離:高度自治
二、實踐:
1、構建API
語言ruby,web框架Grape, web伺服器WEBrick,
Rack?Rack Gem?
2、代碼測試,靜態檢查
RSpec代碼測試工具
rack-test 測試api介面
測試覆蓋率統計:SimpleCov
靜態檢查:Rubocop
代碼複雜度:Cane
3、構建Docker映像
3.1 Dockerfile定義:
FROM <image>:<tag> 從docker hub上獲取映像 FROM ruby:2.1.5
MAINTAINER <name><email> 維護人的姓名郵件 MAINTAINER docker-library <[email protected]>
RUN <command> 在Docker容器里運行Shell命令 RUN apt-get update-y
WORKDIR <path> 指定工作路徑 WORKDIR /app
ADD <src> <dest> 添加應用的目錄、文件到Docker容器中。<src>相對於應用的相對路徑(文件/目錄) ,<dest>容器內文件、目錄的絕對路徑 ADD Gemfile /app/Gemfile
EXPOSE <port> 容器與主機的埠映射關係 EXPOSE 8080
CMD <command> 容器運行時的預設命令 CMD ["rackup","-o","0.0.0.0","-p","8080"]
3.2 Boot2Docker
在window,mac上構建docker虛擬機
boot2docker init
boot2docker up
docker images
3.3 構建映像
docker build -t products-service .
docker images |grep products-service
3.4 運行容器
docker run -p 8080:8080 products-service
docker ps 查看容器的運行信息
boot2docker ip 查看docker主機Ip
3.5發佈docker映像
發佈到docker hub、私有倉庫:docker push 、雲存儲。
3.6、部署Docker映像
使用sh腳本從dockerhub 獲取映像 、運行容器
4、持續交付流水線
書中的Snap-CI 已經廢棄,已推出Go CD
5、日誌聚合
Splunk 、ELK(ElasticSearch、LogStatsh、Kibana)
6、監控告警
Nagios
PagerDuty
三、進階