一、基础
微服务架构:把单一的应用划分为一组小的服务,每个服务都是业务属性的独立单元,能够独立开发、运行、测试、部署。
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 <docker-library@github.com>
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
三、进阶