study--技术演进

基本概念

1)什么是分布式?**

系统中的多个模块在不同服务器上部署,即可称为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。

2)什么是高可用?

系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性。

3)什么是集群?

一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。

如Zookeeper中的Master和Slave分别部署在多台服务器上,共同组成一个整体提供集中配置服务。

在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,这时候说明集群具有高可用性。

4)什么是负载均衡?

请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的。

5)什么是正向代理和反向代理?

系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理;

当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。

简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程。

架构演进

浏览器往某一个网址发起请求时,首先经过DNS服务器(域名系统)把域名转换为实际IP地址,浏览器转而访问该IP对应的Tomcat。

1)单机架构;
2)tomcat与数据库分离;
3)引入本地缓存和分布式缓存;(memcached本地缓存,Redis分布式缓存)
4)引入反向代理实现负载均衡;(nginx)
5)数据库读写分离;(Mycat)
6)数据库按业务分库;
7)大表拆为小表;如分库分表的管理和请求分发,由Mycat实现,SQL的解析由单机的数据库实现,读写分离可能由网关和消息队列来实现,查询结果的汇总可能由数据库接口层来实现等等。这种架构其实就是MPP(大规模并行处理)架构的实现。如:MPP数据库,TiDB更侧重于分布式OLTP场景,Greenplum更侧重于分布式OLAP场景提供了类似Postgresql、Oracle、MySQL那样的SQL标准支持能力,能把一个查询解析为分布式的执行计划分发到每台机器上并行执行,最终由数据库本身汇总数据进行返回。也提供了诸如权限管理、分库分表、事务、数据副本等能力,并且大多能够支持100个节点以上的集群,大大降低了数据库运维的成本,并且使数据库也能够实现水平扩展。
8)使用LVS或F5来使多个Nginx负载均衡;
9)通过DNS轮询实现机房间的负载均衡;
10)引入Nosql数据库和搜索引擎等技术;(elasticsearch、hdfs、hbase、kylin)
11)大应用拆分为小应用;(zookeeper)
12)复用的功能抽离成微服务;(HTTP,TCP,RPC、dubbo、springBoot)
13)引入企业服务总线ESB屏蔽服务接口的访问差异;(SOA架构)微服务架构更多是指把系统里的公共服务抽取出来单独运维管理的思想,而SOA架构则是指一种拆分服务并使服务接口访问变得统一的架构思想,SOA架构中包含了微服务的思想。
14)引入容器化技术实现环境隔离和动态服务管理;(Docker、Kubernetes)
15)以云平台承载系统;(IaaS基础设施即服务、PasS平台即服务、SaaS软件即服务)

基本原则

1)N+1设计:系统中的每个组件都应做到没有单点故障;
2)回滚设计:确保系统可以向前兼容,在系统升级时应能有办法回滚版本;
3)禁用设计:应该提供控制具体功能是否可用的配置,在系统出现故障时能够快速下线功能;
4)监控设计:在设计阶段就要考虑监控的手段;
5)多活数据中心设计:若系统需要极高的高可用,应考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用;
6)采用成熟的技术:刚开发的或开源的技术往往存在很多隐藏的bug,出了问题没有商业支持可能会是一个灾难;
7)资源隔离设计:应避免单一业务占用全部资源;
8)架构应能水平扩展:系统只有做到能水平扩展,才能有效避免瓶颈问题;
9)非核心则购买:非核心功能若需要占用大量的研发资源才能解决,则考虑购买成熟的产品;
10)使用商用硬件:商用硬件能有效降低硬件故障的机率;
11)快速迭代:系统应该快速开发小功能模块,尽快上线进行验证,早日发现问题大大降低系统交付的风险;
12)无状态设计:服务接口应该做成无状态的,当前接口的访问不依赖于接口上次访问的状态。

文章作者: gqsu
文章链接: http://www.ipdax.com/2018/10/10/study-技术演进/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 技术笔记分享
支付宝打赏
微信打赏