微服务架构与实战

微服务的概念

微服务架构是一种架构模式,它提倡将单一应用程序划分成一级小的服务,服务之间互相协调、相互配合,为用户提供最终的价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的 RESTful API)。每个服务都围绕着具体的业务进行构建,并且能够被独立地部署到生产环境、预发布环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根所业务上下文,选择合适的语言、工具对其进行构建。
<!-- more -->

微服务的的拆分

业务独立性
团队自主性
单一职责
轻量级通信
独立性
进程隔离

容器虚拟化技术

Docker是一个开源的应用容器,允许开发者将他们的应用以及依赖,打包到一个可移植的容器中,然后发布到任何装有Docker的Linux机器上。

微服务的本质

  • 服务作为组件
    • 提倡使用组件的方式,组应用模块化并为期构建相对独立的单元,传统实现组件的方式是隔离独立 的部分或抽取公的部分,构建共享库,从而达到解耦和复用。和语言相关和平台相关
  • 团绕业务组织团队
    • 提倡以业务为核心,按业务能力来组织团队,团队中的成员具有多样性的技能
  • 关注产品而非项目
  • 技术多样性
    • 倾向于采用统一的技术平台或方案来解决所有的问题,并不是每个问题都是钉子,也不是每个解决方案都有锤子。解决方案也应该具有针对性,针对不同的业务场景产出不同的技术方案。
  • 业务数据独立
    • 自主管理期相关的业务数据,提代业务数据接口集成,能够随着业务的发展,选择更合适的工具管理或者迁移业务数据
  • 基础设施自动化
    • 健康监控,错误回滚,日志分析,运维成本增加
  • 演进式架构
    • 随着业务的发展而不断发展,随着业务的需求变化而变化,单块架构系统时,会面临非常多的技术选型。
    • 单块架构设计构建一个大而全,无所不能的平台,但在技术发展如此之快的今天,单一的技术平台已经无法适应市场的快速变化,不断尝试新的架构设计。真正做到业务驱动架构,架构服务于业务。
Read more   2017/12/6 posted in  微服务架构

构建第一个服务

用后端语言做一些API接口的包装而以

关键词

持续集成 Snap-Ci 构建映像 Docker 监控警告 Nagios 日志聚合Splunk
基础设施自动化 Chef Puppet Ansible Salt
`

2017/12/6 posted in  微服务架构

持续交付流水线

持续集成环境

选用snip-ci做为持续交付工具,开源工具,如果是公司的话最好自己搭建一个持续集成环境,比如jenkins等。

持续交付阶段

  1. 提交阶段

    1. 代码编译
    2. 静态检查
    3. 运行单元测试
    4. WebHook的方式,检测代码库的提交事件,触发相应的处理逻辑,
    5. 定时检查代码库发生的变化,触发相应的机制
  2. 验证阶段

    1. 运行集成测试
    2. 运行用户行为测试
    3. 运行组件测试
    4. 运行性能测试
  3. 发布阶段(美团这里多出一个阶段叫构建,打包,编译)

  4. 构建阶段

    1. 构建部署包
    2. 构建触发策略(通过关闭自动触发机制,改为手机,经过上面的的提交和验证阶段完成后用CURL的方式触发)
  5. 部署阶段

    1. 测试环境
    2. 仿真环境(预发布环境)
    3. 生产环境
测试环境 预发布环境 生产环境
触发方式 自动 手动 手动
数据来源 模拟数据 真实数据 真实数据
目的 验证团队功能 基于生产环境的真实数据为业务部门进行演示 为用户提供真实的服务
2017/12/6 posted in  微服务架构