博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《微服务 架构与实践》王磊 摘要
阅读量:5063 次
发布时间:2019-06-12

本文共 1896 字,大约阅读时间需要 6 分钟。

  • 一、单块架构及面临的挑战
单块的挑战
    维护成本增加
    持续交付周期长
    新人培养周期长
    技术选型成本高
    可扩展性差
 
  • 二、微服务架构综述
2.1 什么是微服务架构
1 观点:
  1. 绝大多数微服务的成功案例,都是从整体架构(Monolith)开始的。并且由于整体架构过于庞大,导致架构无法继续支撑。
  2. 绝大多数我所听说的系统,如果从一开始就使用微服务架构,最终都遇到了很严重的问题。
建议:
    并不应该从项目一开始就使用微服务架构,即便你能够保证你的应用足够大,以至于使用微服务架构是值得的
直接上微服务,鲜有成功之例子。
 参考:
2 微服务的描述
     微服务架构是一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务见采用轻量级的通信机制互相沟通。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建。
3 多微才好?
    原则:业务独立性;团队自主性(10人一下团队)
    单一职责。
SRP 单一责任原则
OCP 开放封闭原则
LSP 里氏替换原则
DIP 依赖倒置原则
ISP 接口分离原则
4 轻量级的通信机制
5 独立性
6 进程隔离
2.2 诞生背景
1 互联网行业的快速发展
2 敏捷、精益、持续交付等方法论深入人心
3 单块架构的挑战
4 容器虚拟化技术的成熟 Docker
2.4 微服务本质
    服务作为组件。服务之间定义清晰、语言无关、平台无关的接口。
    围绕业务组织团队。
    关注产品而非项目。
    技术多样性。
    业务数据独立。
    基础设施自动化。DevOps
    演进式架构
2.5 不是银弹!
    这里列出缺点:
    分布式系统的复杂度。性能、可靠性、异步、数据一致性、工具
    运维成本。配置、部署、监控与告警、日志收集
    部署自动化。必须自动化
    DevOps与组织架构
    依赖测试
    依赖管理  
  • 三、实践篇
3.1 任务拆分
    构建第一个hello world API
    代码测试与静态检查
    Docker映像构建
    Docker映像部署
    持续集成与交付
    监控与告警
    日志聚合
3.2 构建服务
    提前将开发、测试、部署、运维、监控的流水线打通。
    本书选择了ruby作为开发语言。
       
    单元测试框架。JUnit。不是所有的单元都要测试
    测试API。
    代码静态检查。ide的check,或者firebug
3.3 Docker
    已经是一项成熟且值得应用的技术。推荐。
    构建映像。构建、运行容器、发布映像。注意自动化。
    部署映像。基础设施自动化:分析配置文件、创建基础设施、get Docker映像、运行
3.4 持续交付流水线
    本书代码托管在github上,采用了snap-CI作为持续交付工具。
    实际需要考虑代码的托管方式,和局域网本的持续交付工具。
    备选:thoughworks GO、Jenkins
任务:
    1 提交。代码编译、静态检查、单元测试
    2 验证。集成测试、用户行为测试、组件测试、性能测试。
    3 构建。
    4 发布。    测试环境、    类生产环境、    生产环境
触发                自动            手动              手动
数据来源        模拟            真实                真实
目的            验证功能      演示                    真实的服务啊
3.5 日志聚合
    Splunk
    LogStash
    
    初始的日志方式。
    日志种类:标准、文件、syslog等
3.6 监控与告警
    nagios系统监控。 it基础设施监控系统。
3.7 功能迭代
1 服务描述文件
    服务描述
    维护者
    可用期
    运行环境。生产、测试
    开发。如何搭建、运行、调试
    测试
    构建。持续集成、描述、发布
    部署
    运维。日志、监控地址    
四、进阶篇
4.1 持续交付
1 开发:独立的代码库;服务说明文件;代码所有权归团队;有效的版本管理;静态检查工具;易于本地运行
2 测试。mock和stub;接口测试。有效性
3 持续集成。
4 构建
5 部署。手动、脚本、基础设施自动化(chef、puppet、ansible)、应用部署自动化(映像部署、容器部署)
4.2 轻量级通信
1 同步和异步
2 RPC
3 REST
    资源、表述、状态转移、统一接口
4 HAL。
5 消息队列ActiveMQ、rabbitMQ
6后台任务处理系统
4.3 测试
    
 
posted on
2016-06-19 00:01 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/windspear/p/5597224.html

你可能感兴趣的文章
【贪心+DFS】D. Field expansion
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>