当一个企业的业务迅速的发展起来,那么项目架构一定会发生改变,如果还是使用简单的单体架构的话,随着用户量上升,或者云服务不给力宕机,这个时候就会成为企业成长的短板,所以要跟上企业的发展,那么系统架构一定要做演变。
先来看一下单体架构的部署图
从上图可以看得出来,如果其中一个服务宕机,那么整个系统不可用,会造成资损,也会造成用户流失,这对一个正在成长的企业来说是致命的,所以,我们需要提供高可用机制来保证系统的7x24不间断运行,也就是集群架构。我们来看一下如下拓扑图:
首先我们面对的是tomcat中的项目,目前只有一个,我们可以使用Nginx作为反向代理服务器搭建tomcat集群,并且提供负载均衡机制,使得项目不会因为宕机而造成不可用,并且集群还能适当的提高整个系统的并发,并且整个系统对于用户来讲都是透明的,用户只在乎请求和及时响应。所以Nginx会成为集群部分的重点内容,我们来开一下下面的脑图:
这些都是Nginx部分的内容,十分详细,分为三个部分,基础,进阶和高可用
基础部分包括Nginx介绍,正向代理与反向代理。Nginx的安装和配置,Nginx的进程模型以及核心配置文件。另外日志是一种生产服务器上调试的手段,可以通过日志来排查问题,但是日志需要人工切割,否则就是一份大文件,所以我们给大家讲解如何定时的自动进行日志切割,可以按照时间日期进行切分。此外还会包括如何通过nginx的虚拟主机功能映射不同的域名,这种场景就是当有多个域名但是只有一个服务器的时候,可以用nginx来构建虚拟主机。
当网站里有css、js、html、图片等文件,可以通过gzip来压缩内容,这样可以节省网络带宽,提高用户的访问效率,减少交互时间。
location匹配规则也是用的比较多,其实也就是路由功能,根据不同的请求url来分配不同的访问。
除了JSONP和SpringBoot解决跨域问题外,也能通过Nginx来解决,所以我们会讲解如何在nginx.conf中配置,原理会和springboot配置都是一样的。
对于静态资源,尤其是图片,往往我们可以设置防盗链,避免被其他网站的引用,这也是平日里用的比较多的。进阶部分主要涉及到Nginx构建集群与负载均衡,我们会讲模块化设计和集群与负载均衡的原理,随后就要构建tomcat集群了。集群涉及到相应的负载均衡算法,默认为轮询,当然我们也讲了其他的算法,包括加权轮询、ip_hash、url_hash等我们都会一一讲解和演示。
此外upstream还提供了一些额外的指令,比如有:max_conns、slow_start、down、backup、max_fails、fail_timeout。当然我们还会通过keepalive的使用来提升系统的吞吐量。
另外呢,我们会用图演示举例一致性哈希算法的原理,因为这个在面试过程中可能会被问到。
另外为了提高用户的请求速度,我们还会接触到两种缓存机制,一种是浏览器缓存,另一种是反向代理的缓存,这两种都可以通过nginx来控制。
当然我们还会讲解ssl,也就是https的配置,我们会通过云服务器来演示,因为https在现如今是非常重要的。第三部分可以说是非常的重要,会涉及到LVS和Keepalived,这个为整个架构提供了高可用高性能的集群负载均衡,也是目前很多企业里用的很流行的集群解决方案。我们主要会讲keepalived的双机主备和双主热备的搭建,LVS的原理和三种模式,其中LVS的DR模式会单独演示,并且最后会通过keepalived结合LVS以及Nginx来构建高可用的集群负载均衡,这些都是手把手的带着大家去学习和部署噢~~如果你能够在面试过程中很详细的把这个部署过程以及架构讲出来,那么你的竞争力是相当高的,拿到offer的概率也是相当高的~~!
集群架构呢是在单体架构后必经的一个演变过程,而且也是最简单的提高并发能力的架构。这也是架构师和高级Java必须掌握的技术架构噢~~
国内外一线大厂技术大咖与慕课网组成专家团队12个月磨一剑
千万级电商项目从0到1到100全过程
涵盖Java程序员不同成长阶段的问题及最佳解决方案
共同学习,写下你的评论
评论加载中...
作者其他优质文章