《微服务-架构与实践》

一、基础

微服务架构:把单一的应用划分为一组小的服务,每个服务都是业务属性的独立单元,能够独立开发、运行、测试、部署。

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

三、进阶

原文地址:https://www.cnblogs.com/simbadan/p/6934590.html