架构历史:
1、单一应用架构
缺点:单一的系统架构,当系统变得庞大,复杂后;新的扩展、维护,会变得复杂和困难。
每次启动系统,都需要启动所有的东西。而你的扩展,有些东西却没有任何关联。
2、垂直应用机构
优点:垂直应用架构解决了单一应用架构所面临的扩容问题,能够将流量分散到各个子系统当中,
而且系统的体积可控,一定程度上降低了开发人员之间的协同以及维护的成本,提升开发效率。
缺点:但是垂直架构中相同的逻辑代码需要复制,不能复用。
3、分布式架构
优点:公共的逻辑业务抽取出来形成对外服务。这样对于维护和升级都只需要针对相应的系统进行。
也可以让前段业务系统与底层数据访问分离,团队分工更为明确。
当某个dubbo服务,负载过重时,可以直接增加对应服务的机器数量,用以分担负载。
此时,dubbo的Monitor,就起到监控作用,统计服务的调用次数和调用时间。
分布式系统所依赖的基础设施包括服务框架,消息中间件,数据访问中间件,配置中心,分布式缓存系统。
持久化存储(关系数据库,nosql数据库)、搜索引擎、CDN网络、负载均衡系统、运维自动化系统、硬件虚拟化、
镜像管理系统,分布式文件系统、日志收集系统、监控系统、离线计算、实时计算、数据仓库等等。
原理:
dubbo架构说明:
1、服务提供者(provider)含服务容器(container)
2、服务消费者(consumer)
3、注册中心 (registry)
4、监控中心 (monitor)
dubbo调用关系:
1、container启动,将provider注册到registry。
2、consumer启动,从registry中获取provider。
3、调用的时候,monitor进行监控统计。
4、registry维护provider的信息。
调用关系说明:
1、服务容器负责启动,加载,运行服务提供者。
2、服务提供者在启动时,向注册中心注册自己提供的服务。
3、服务消费者在启动时,向注册中心订阅自己所需的服务。
4、注册中心返回服务提供者地址列表给消费者,如果地址有变更,注册中心将基于长连接推送变更地址列表给消费者。
5、服务消费者从地址列表中,基于软负载均衡算法,选择一台提供者进行调用,如果失败,再选另一台调用。
6、服务提供者和消费者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
健壮性:
1、注册中心宕机,消费者仍能通过本地缓存的地址列表对提供者进行调用。
2、监控中心,不影响使用。
伸缩性:
1、提供者无状态,可以动态增加机器部署实例。实现高负载。
使用:
一、协议:
1、dubbo 缺省协议,采用单一长连接和NIO异步通讯。适用于小数据量大并发的场景。不适用于传递大量的数据服务,如文件,视频等。