文章目录
一、架构基础知识概述二、酒店人员组织架构三、 web网站架构四、 总结一、架构基础知识概述
项目: 类似于手机的app,每一个app都可以算做一个项目。还比如游乐场里面的项目,由各个娱乐设施组成。
架构:维护一个项目使用的一套服务器。类似于不同的部门功能来维护一个项目,维护的目的就是为了赚钱。
集群:为解决某个特定问题将多台计算机组合起来形成的单个系统。集群里的计算机干的事情都是一样的。如果某台机器出现故障了,不会影响整个集群的运转。比如解决并发,一台机器扛不住。
高可用:当一台服务器不可用,另一台服务器自动接管,保证业务不down机。类似于部门的正副经理,当正经理没来的时候,副经理可以顶上去,维持正常工作。保证业务持续的稳定下去,这样才能持续的赚钱。
二、酒店人员组织架构
为了能理解框架,举一个生活中的栗子,比如一个运行一个酒店,里面都都包含什么职位,每个职位的作用,怎么进行有条不紊的工作的。
小提示:
保安:验证身份备菜:就是顾客比较多的时候,预定了菜品,厨师提前准备好了,服务员先去看备菜里有没有顾客需求的,如果没有,再去找厨师。管理人员:管理保安,服务员,厨师等。仓库:存放杂物,或者存放重要的文件或者手机。监控:防止员工偷懒,偷吃。事后有证据,可以追溯。
三、 web网站架构
架构访问流程->用户视角
用户通过浏览器输入->回车浏览器会发生一次跳转,分析URL->然后进行DNS解析->获取真实的公网IP地址用户通过tcp的三次握手发起连接->真实的公网IP连接会通过公网->路由器->交换机->抵达前端的硬件防火墙防火墙根据自身访问规则,进行匹配->如果恶意的连接则拒绝->如果是正常的连接则放行防火墙会将连接转发给负载均衡器->查看用户请求的内容->根据内容进行任务下发->下发给web服务器web服务接收请求后会根据请求进行判断
如果是请求图片或者附件->查找存储服务器存储的静态资源
如果请求的网站上的内容->缓存服务器->如果缓存服务器没有->数据库
数据库查询完数据之后会返回数据给web服务器->同时也会返回一份给缓存服务器数据库返回内容->web服务器->负载均衡->用户
架构访问流程->运维视角
用户通过公网连接(隧道)VPN服务器,这样方便管理内部主机,自动化配置管理,节省人力成本,便于后期维护。统一环境,标准化自动化监控服务,监控系统的运行状态,事前预警,事后追溯。
小提示:
负载均衡可以理解为中介、代理。文字类的都在服务器里存着,但是数据库里不会存储图片,图片因该放在存储设备上面。先查缓存后查数据库只有防火墙才有公网ip,如果没有防火墙,那么就是负载均衡才有公网ip那么如何才能连上内网那? 有一个跳板机,类似于vpn,就好像现在访问谷歌一样,必须借助vpn,vpn的防火墙可以和谷歌的服务器能进行通信,这样才能实现,在通过vpn把数据返回给用户。跳板机先通过公网网卡登录上跳板机这个服务器,然后通过这个服务器的内网网卡,来进行内网的通信。就比如,通过公网来连接讲师机,然后可以通过讲师机来连接学生机。监控:事前预警,时候追溯,监控可以有自己的公网地址,也可以有自己的私网地址。 监控是图形界面的监控。备份没有公网ip,上图中由公网ip,那个是练习用的,比较方便。硬件负载均衡,软件负载均衡。在主机上面跑一个负载均衡的软件,硬件买不起,软件的的负载均衡学会了,硬件的也就会了。负载均衡的软件:lvs
支持四层haproxy
国内用的不多,支持四七层Nginx
国内用的过,功能强大支持四七层负载用nginx,web用nginxLNMP:
在这个服务器上运行php的的项目,或者运行python的项目
LNMT:
T代表TOMCAT的工具,运行的是javaRedis
不能模拟缓存的内容,但是可以模拟用缓存解决会话登录的问题。
会话登录:如果登录一个网站,下次打开这个网站还是登录的。在很多公司并不是这样的,如果访问一个网站,通过负载均衡调度到集群中的一个服务器,一刷新,调度有到了第二台机器了,这个时候这台机器没有记录你的信息,又需要重新登录,可以用redis解决这个问题。开发写程序预先约定好的,只需要连接好这个服务就好了。Redis
也是一个数据库,他与MySQL的区别在于,resid是一个内存数据库,相对而言内存要快,mysql的数据都在磁盘,所以内存比较快一些,通常用redis进行加速。每家公司用这个软件的手法各不一样,取决于业务的实际情况。NFS:基本的储存方式。传统的方式,只能做一台,不能做集群,传输的文件是透明的,更容易理解。有更高级的软件。跳板机有做跳板有用来管理上面的主机。ssh
有账户密码不方便,不要点记住密码,通常公司都不用账号密码,记不住,机器多的话,三个月改一次密码。 用这个软件效率不高。基于这个ssh协议基础之上,用一个工具叫ansible
,这个是一个自动化管理的工具,执行一个命令,上面的所有的服务器环境都配置好了。添加一个服务器,一键就配置好了。Rsync远程同步,怎么把远程的配置文件保存到这个台服务器上加一个外网,因为用跳板机很不方便,方便学习的时候直接连接,所以真正做的时候在关掉。mysql会独立的放到一个服务器上去运行,可以针对这一种角色做集群负载均衡刚开始是一台,后面增加一台,保证高可用性。实现高可用:keepalived 用到的场景并不多,因为有一台服务器必须是休息状态,一种浪费的状态,keepalived必须跑在自己的硬件服务器上面。在现在的公有云上面不能运行这个软件的。 有些东西可以不用,但是不能不用。服务没有重启意味着没有生效当下有许多的运维自动化工具( 配置管理 ),例如:Ansible
(主流)(1)被红帽收了(2)基于ssh协议,不需要安装客户端,可以随意移植。SaltStack
(主流,但是需要装客户端的,每台系统的版本不一样,是有问题的) 、Puppet
(用的少)、Fabric
等。
四、 总结
一个项目涵盖了一套架构,一套架构又涵盖了不同的角色(高可用、负载均衡、web集群)五层架构模型–> 负载均衡 web服务 存储服务 缓存服务 数据库服务(通过tcp连接)架构如何演变->服务器架构扩展横向扩展也叫水平扩展,用更多的节点支撑更大量的请求。 如成千上万的蚂蚁完成一项搬运工作
纵向扩展又叫垂直扩展,扩展一个点的能力支撑更大的请求。如蜘蛛侠逼停火车一个(架构)网站的瓶颈:不在于主机数量的多与少,在于带宽 ,如果带宽都达不到的话。那么网站没有并发可言 。还有一个瓶颈:走的层数越多越慢,也就是经过的环节越多,返回效率越低。