微服务应用入门介绍
数据可视化),捕获这些跟踪数据,就能构建微服务的整个调用链的视图,是调试和监控微服务的关键工具。
8
微服务架构图
配置中心 (configserver)
应用层 路由转发与过滤(service-gateway) 服务消费者,负载均衡,熔断(service-consumer)
A
服
务
集
数据库A
群
数据库B
服务提供者(servie-provider)
除了注册中心之外, Spring Cloud还有很多的组件,供使用者按需获取
7
微服务框架SpringCloud重要组件
IT技术学习系列—鲁钝
SpringCloud提供了快速建立微服务架构的一些常见组件,如:
服务发现 —— Netflix Eureka:核心组件,负责服务注册,管理服务列表。 负载均衡 —— Netflix Ribbon:提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起 服务容错组件 —— Netflix Hystrix:隔离措施的一种实现,可以设置在某种超时或者失败情形下断开依赖调用或者返回指定
2.技术债务逐渐上升
公司的人员流动是再正常不过的事情,人员水平参差不齐,导致留下来很多坑,由于单体项目代码量庞大的惊人,留下的坑很 难被发觉,这就给新来的员工带来很大的烦恼,人员流动越大所留下的坑越多,也就是所谓的技术债务越来越多。
3.部署速度逐渐变慢
单体架构模块非常多,代码量非常庞大,导致部署项目所花费的时间越来越多,曾经有的项目启动就要一二十分钟,这是多么 恐怖的事情啊,启动几次项目一天的时间就过去了,留给开发者开发的时间就非常少了。
4.阻碍技术创新
比如以前的某个项目使用struts2写的,由于各个模块之间有着千丝万缕的联系,代码量大,逻辑不够清楚,如果现在想用 spring mvc来重构这个项目将是非常困难的,付出的成本将非常大,所以更多的时候公司不得不硬着头皮继续使用老的struts 架构,这就阻碍了技术的创新。
5.无法按需伸缩
单体架构中集成了非常多个功能模块,由于所有的模块都在一个架构下,因此我们在扩展某个模块的性能时不得不考虑其它模 块的因素,因为我们不能因为扩展某个模块的性能而损害其它模块的性能,从而无法按需进行伸缩。
3
微服务的特征
IT技术学习系列—鲁钝
1. 服务组件化: 组件可以独立更换和升级 2. 按业务组织团队: 而不是以往的按技术层面(DBA, 运维, 后端, 前端) 3. 做产品的态度: 需要用做产品的态度来对待每一个微服务(you build, you run it) 4. 智能端点和哑通道:由于服务不在一个进程中,互相间的通信必须简单高效,支持多种服务调用方式:
IT技术学习系列—鲁钝
注册中心 (serviceeureka)
逻辑,从而提高分布式系统的稳定性.
配置中心 —— SpringCloud Config:解决分布式系统的配置管理方案。它包含了Client和Server两个部分,server提供
配置文件的存储、以接口的形式将配置文件的内容提供出去,client通过接口获取数据、并依据此数据初始化自己的应用。
安全认证 —— SpringCloud Security:提供了一组原语,用于构建安全的应用程序和服务,可以在外部(或集中)进行
并计算结果就是分布式架构的一个好的体现。 • 第三种就是微服务架构。
2
现实遇到的挑战
IT技术学习系列—鲁钝
单体架构在规模比较小的情况下工作情况良好,但是随着系统规模的扩大,它暴露出来的问题也越来越多,主要有以下几点:
1.复杂性逐渐变高
比如有的项目有几十万行代码,各个模块之间区别比较模糊,逻辑比较混乱,代码越多复杂性越高,越难解决遇到的问题。
Spring Cloud中有一个组件,叫注册中心,注册中心的特点
注册中心负责将所有的服务统一管理,把所有服务变成一个有机的整 体,不再是独立的个体,通过组织对外提供服务,而不再是由个体单 独提供服务
调用不再通过传统的IP+端口的形式,通过服务名的方式进行调用
便于被外界发现和使用,如果没有注册中心,服务可能被遗忘或压根 没有人知道
4
微服务与SOA的区别
IT技术学习系列—鲁钝
微服务只是一种为经过良好架构设计的SOA解决方案,是面向服务的交付方案。 微服务更趋向于以自治的方式产生价值。 微服务与敏捷开发的思想高度结合在一起,服务的定义更加清晰,同时减少了企业ESB开 发的复杂性。 微服务是SOA思想的一种提炼! SOA是重ESB,微服务是轻网关。
大量配置的声明性模型有助于实现大型协作的远程组件系统。在Spring Boot和Spring Security OAuth2的基础上,可以快速创 建实现常见模式的系统,如单点登录,令牌中继和令牌交换。
服务链路跟踪 —— SpringCloud Sleuth:能跟踪一个用户请求的过程(包括数据采集,数据传输,数据存储,数据分析,
IT技术学习系列—鲁钝
微服务应用介绍
鲁钝IT学习工作室 2020年1月21日
1
常见系统架构
目前我们经常接触的网络架构主要有三种,如下图:
IT技术学习系列—鲁钝
• 第一种是集中式架构也是单块应用最常使用的架构模式。 • 第二种是分布式架构,最常见的应用是将一个大的任务拆分到不同的机器中进行计算,最终有一台服务器合
5
微服务小结
技术异构性 可扩展性 康威定律 可替换风险低 简化部署
弹性 可组织性
优点
SOA的一种实现
微服务
IT技术学习系列—鲁钝
产生原因
领域驱动开发 持续交付 虚拟化 容器技术 自动化 敏捷团队
概念
自治、服务与消费端分离
足够小、与业务模块匹配 6
微服务框架技术选型
IT技术学习系列—鲁钝
服务框架的选择对于微服务非常重要,推荐选用SБайду номын сангаасring Cloud
(1)外部Http RESTful API (2) 轻量级消息总线(RabbitMQ, Kafka) (3)内部RPC调用
5. 去中心化治理:自己决策自己治理,而不需要统一的指挥中心。团队之间松耦合。 6. 去中心化管理数据:如把原本存储在数据库中的表拆分后,存储到多个不同的数据库实例中 7. 基础设施自动化: 8. 容错设计 9. 演进式设计