在没有提出微服务的概念时,一个软件应用,往往会将应用所有功能都开发和打包在一起,运行在通用的服务器上,如Tomcat等。此时,大多数应用都在一个JVM中,随着应用的增大,性能会不断下降;业务之间的耦合严重,即使企业内部有规范和约束,但随着业务逻辑复杂度的增加,开发人员的不断流动,整个应用的维护变得越来越难。 传统应用带来的问题: 随着互联网应用规模不断扩展,单体应用架构无法满足需求,分布式应用势在必行。 SOA(Service-Oriented Architecture)将单一进程的应用做了拆分,形成独立对外提供服务的组件,每个组件通过网络协议对外提供服务。通过这种协议,服务之间可以通过接口进行交互。通过这种架构,将重复的功能抽取为服务,可以提高开发效率,提高系统的可重用性、减少系统中的接口耦合。 常用的SOA实现方式有两种:Web Service和ESB。Web Service通常使用SOAP协议,即用HTTP和HTTPS来传输XML数据。所有的Web Service服务都会注册到Web Service的目录中,每个服务都依赖于这个目录来发现存在的服务。 ESB简称企业服务总线,服务之间的通信与调用都通过总线来完成,ESB作为项目与服务之间通信的桥梁。 缺点 SOA最早的出现是为了解决企业不同系统之间整合的问题,提出服务重用和消息总线。SOA中存在大量的编排,通常通过消息总线来承载业务逻辑,并构建出重量级中心化的中间件。SOA有个很大的问题在于总线,按照这个思想,这些系统总会在某个环节上走向集中,所以去中心化做的很不彻底。 微服务和SOA一脉相承,是一种将业务系统进一步拆分的架构风格。 微服务强调每个单一业务都独立运行,每个单一服务都应该使用更轻量级的机制保持通信。 微服务不强调环境,可以不同语言或数据源,它不关心你用的是Java还是Python,数据库用的是Mysql还是Redis,仅面向自身单一的服务。 特点 常见分布式系统框架 Openresty 应用层 缓存 消息队列 持久层 Dubbo主要基于Netty和Mina构成,提供高性能、透明的RPC调用。Dubbo可以让开发者像调用本地方法一样调用远程服务,而不需要显式在代码中指定是远程调用。整个过程对开发者透明,Dubbo会自动完成后续的所有操作,例如:负载均衡、路由、协议转换、序列化等。开发者只需要接收对应的调用结果即可。 Dubbo提供了注册中心机制,解耦了消费方和服务方动态发现的问题,并提供高可靠能力,大量采用微内核+富插件设计思想,包括框架自身核心都作为扩展点实现,提供灵活地可扩展能力。 微服务全家桶 Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。比如使用Spring Cloud Config 可以实现统一配置中心,对配置进行统一管理;使用Spring Cloud Netflix 可以实现Netflix 组件的功能 – 服务发现(Eureka)、智能路由(Zuul)、客户端负载均衡(Ribbon)。 Dubbo类似于Spring Cloud的一个子集,Dubbo功能和文档完善,在国内有很多的成熟用户。Dubbo具有调度、发现、监控、治理等功能,支持相当丰富的服务治理能力。Dubbo架构下,注册中心对等集群,并会缓存服务列表,当服务下线时继续提供发现功能,本身的服务发现结构有很强的可用性与健壮性,足够支持高访问量的网站。 Dubbo底层是使用Netty这样的NIO框架,是基于TCP协议传输的,配合以Hession序列化完成RPC通信。而SpringCloud是基于Http协议+rest接口调用远程过程的通信,相对来说,Http请求会有更大的报文,占的带宽也会更多。但是REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更为合适,至于注重通信速度还是方便灵活性,具体情况具体考虑。 二进制流 Dubbo总体分为业务层、RPC层、Remote层。Dubbo框架中的分层代表了不同的逻辑实现,他们是一个个组件,这些组件构成了整个Dubbo体系。duboo仿猫眼微服务架构)
微服务入门
传统业务应用
例如使用传统业务进行统一部署时,订单模块、用户模块、影院模块各占三分之一的内存。项目上线时,有的模块并发量小,有的模块并发量大,当并发量大的模块需要扩容时,相对复杂。微服务发展历程
面向服务开发-SOA
微服务开发
接入层
CDN:静态资源缓存
LVS:负载均衡
Nginx:负载和反向代理
Nginx+Lua的中间件
处理非业务数据 IP黑名单等应用防火墙 在应用之前做拦截等
微服务框架
服务治理
自动化运维发布
热点数据 分布式Session
异步 解耦 削峰
MySQL 文件系统微服务的选择
Dubbo
服务提供者在启动时会向注册中心注册自己的元数据(服务IP和端口等),服务消费方在启动时从注册中心订阅服务提供方的元数据,注册中心发生数据变更会推送给订阅的消费者。在获取服务元数据后,服务消费方可以发起RPC调用,在RPC调用前后会向监控中心上报统计信息。
分类
Dubbo的特性
面向接口代理的高性能RPC调用
基于代理的远程调用,服务以接口为粒度
服务自动注册与发现
支持多种注册中心服务,服务实例上下线实时感知
运行期流量调度
内置路由策略,通过配置不同的路由规则,轻松实现灰度发布、同机房优先等功能
智能负载均衡
内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量
高度可扩展能力
Protocol、Transport、Serialization被设计为扩展点
可视化的服务治理与运维
随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数
SpringCloud
对于类似于电商等同步调用场景多并且能支撑搭建Dubbo 这套比较复杂环境的成本的产品而言,Dubbo 确实是一个可以考虑的选择。Zero ICE
Dubbo
层次名
作用
Service
业务层。业务代码的接口与实现
config
配置层。围绕ServiceConfig和ReferenceConfig两个实现类展开,初始化配置信息
proxy
服务代理层。代理层自动做远程调用并返回结果
register
注册层。负责Dubbo框架的服务注册与发现
cluster
集群容错层。远程调用失败时的容错策略;选择具体调用节点时的负载均衡策略;特殊调用路径的路由策略
monitor
监控层。监控统计调用次数和调用时间等
protocol
远程调用层。Invoker暴露和引用的主功能入口,管理Invoker的生命周期。
exchange
信息交换层。建立Request-Response模型,封装请求响应模式,如把同步请求转化为异步请求
transport
网络传输层。把网络传输(如Netty、Mina)抽象为同一的接口
Serialoze
序列化层。管理整个框架网络传输时的序列化/反序列化工作
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算