分布式:分散压力。
微服务:分散能力。
分布式:
不同模块部署在不同服务器上
作用:分布式解决网站高并发带来问题
集群:相同的服务
多台服务器部署相同应用构成一个集群
作用:通过负载均衡设备共同对外提供服务
SOA[组装服务/ESB企业服务总线]
业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力
通过服务的组合和编排来实现上层的业务流程
作用:简化维护,降低整体风险,伸缩灵活
微服务[找到服务/微服务网关open API]
架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行
SOA到微服务架构的演进过程
作用:各服务可独立应用,组合服务也可系统应用(巨石应用[monolith]的简化实现策略-平台思想)
集群:就是很多的服务器来实现一种功能,例如mysql,很多的服务器都安装mysql,
负载均衡:就是用来调节的,比方说有很多的用户都在访问读取数据,可是读取a服务器的mysql多,而读取别的服务器的mysql就少,负载均衡把访问a的用户转给b一部分,防止a由于访问量过大造成宕机什么的。
分布式:一个系统把不同的服务分开来部署,用户模块,bbs论坛模块,内容模块,支付模块。对服务的访问量很大的时候,单台服务器已经满足不了需求,就把服务分散到几台甚至几十台几百天电脑上
好处:每个模块只负责自己的事情和请求压力,开发人员只负责自己的东西
分布式应用开发简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。
面向服务框架SOA,微服务:
soa就是服务化的架构体系,微服务是soa的一种实现方式
微服务的目的是有效的拆分应用,实现敏捷开发和部署 。
系统由不同的服务构成,
每个服务作为独立的业务开发
每个服务单独部署,跑在自己的进程里
1.客户端如何调用服务?
api gateway ---- nginx
提供统一服务入口,让微服务对前台透明
聚合后台的服务,节省流量,提升性能
提供安全,过滤,流控等API管理功能
2.服务间如何通信?
同步-RPC-dubbo
3.这么多服务,怎么找?==如何确定访问的资源在哪个服务器上?
在微服务架构中,一般每一个服务都是有多个拷贝,来做负载均衡。一个服务随时可能下线,也可能应对临时访问压力增加新的服务节点。服务之间如何相互 感知?服务如何管理?这就是服务发现的问题了。
基本都是通过zookeeper等类似技术做服务注册信息的分布式管理。当 服务上线时,服务提供者将自己的服务信息注册到ZK(或类似框架),并通过心跳维持长链接,实时更新链接信息。服务调用者通过ZK寻址,根据可定制算法, 找到一个服务,还可以将服务信息缓存在本地以提高性能。当服务下线时,ZK会发通知给服务客户端。
4.服务挂了怎么办?
5.分布式系统如何负载均衡?
在分布式系统中,负载均衡是非常重要的环节,通过负载均衡将请求派发到网络中的一个或多个节点上进行处理。
负载均衡分为硬件负载均衡及软件负载均衡。
硬件负载均衡,顾名思义,在服务器节点之间安装专门的硬件进行负载均衡的工作,F5便为其中的佼佼者。
软件负载均衡则是通过在服务器上安装的特定的负载均衡软件或是自带负载均衡模块完成对请求的分配派发。
常见的负载均衡策略:
(一).轮询。每一次来自网络的请求轮流分配给内部中的服务器,从1至N然后重新开始
(二).随机。请求随机发给服务器
(三).最小响应时间。负载均衡设备对内部各服务器发出一个探测请求(例如Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来响应客户端的服务请求
(四). 最少连接数:对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如FTP。