前后端分离 集群负载均衡 分布式 微服务
一.前后端分离
1.为什么要前后端分离
在以前传统的网站开发中,前端一般扮演的只是切图的工作,只是简单地将UI设计师提供的原型图实现成静态的HTML页面,而具体的页面交互逻辑,比如与后台的数据交互工作等,可能都是由后台的开发人员来实现的,或者是前端是紧紧的耦合后台。比如,以前淘宝的Web基本上都是基于MVC框架webx,架构决定了前端只能依赖后端。所以他们的开发模式依然是,前端写好静态demo,后端翻译成VM模版,这种模式的问题就不说了,被吐槽了很久。
而且更有可能后台人员直接兼顾前端的工作,一边实现API接口,一边开发页面,两者互相切换着做,而且根据不同的url动态拼接页面,这也导致后台的开发压力大大增加。前后端工作分配不均。不仅仅开发效率慢,而且代码难以维护。而前后端分离的话,则可以很好的解决前后端分工不均的问题,将更多的交互逻辑分配给前端来处理,而后端则可以专注于其本职工作,比如提供API接口,进行权限控制以及进行运算工作。而前端开发人员则可以利用nodejs来搭建自己的本地服务器,直接在本地开发,然后通过一些插件来将api请求转发到后台,这样就可以完全模拟线上的场景,并且与后台解耦。前端可以独立完成与用户交互的整一个过程,两者都可以同时开工,不互相依赖,开发效率更快,而且分工比较均衡。
前后端分离:前端和后端分离开发和部署(前端部署在不同的服务器),这样可以减少tomcat的访问压力,例如:如果前后端部署在一个服务器中,客户端发起一个请求一个服务器要同时处理相应静态页面响应和后端代码的响应,这样服务器就压力很大,如多利用Nginx部署前后端分离,这样同样一个tomcat服务就就能同时处理更多的请求,就符合开发高可用。
优点:将静态资源的访问和对接口的访问进行分离,tomcat服务器只负责数据服务的访问。
二.集群负载均衡
在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如 www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。
负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。
负载均衡集群把很多客户集中访问的请求负载压力尽可能平均的分摊到计算机集群中处理。客户请求负载通常包括”应用程度处理负载”和”网络流量负载”。这样的系统非常适合向使用同一组应用程序为大量用户提供服务。每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。
负载均衡运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样计算机集群有时也被称为服务器群。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。
负载均衡集群的
分担访问流量(负载均衡)
保持业务的连续性(高可用性)
集群负载均衡就是使用多台服务器构成一个数据库整体,以应对多客户请求,当客户发送请求的时候后,服务器不知道哪台服务器空闲,哪台服务器忙碌,这时候就通过负载均衡将客户请求根据服务器状态分配到服务器,以达到高并发,高可用。
3.分布式
简单而言只要服务不是在同一台服务器上就属于分布式
分布式就是把所有的功能、模块拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作共同对外提供服务。
直白一点:就是有很多项目,有很多war包,这些项目相互协作完成需要的功能,不是一个war能完成的,一个war包完成不了。
比如:
Shop项目:单体应用
Shop项目:拆分–> (user-center, order-center, trade-center) 分布式应用
4.微服务
- 微服务架构:将原来在一个应用中开发的多个模块进行拆分,单独开发和部署
- 保证可用性、性能
分布式强调系统的拆分,微服务也是强调系统的拆分,微服务架构属于分布式架构的范畴;
并且到目前为止,微服务并没有一个统一的标准的定义,那么微服务究竟是什么?
微服务一词源于 Martin Fowler(马丁.福勒)的名为 Microservices 的博文,可以在他的官方博客上找到这篇文章:
http://martinfowler.com/articles/microservices.html
中文翻译版本:
https://www.martinfowler.cn/articles/microservices.html
简单地说, 微服务是系统架构上的一种设计风格, 它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于 HTTP 的 RESTful API 进行通信协作; (dubbo -->dubbo协议 ) RESTful API (controller --> 调用 congtroller被拆分后的每一个小型服务都专注于完成系统中的某一项业务功能,职责单一, 并且每个服务都是一个独立的项目,可以进行独立的测试、开发和部署等;由于各个独立的服务之间使用的是基于 HTTP 的 JSON 作为数据通信协作的基础,所以这些微服务也可以使用不同的语言来开发;
比如:项目里面有User模块和Order模块,但是User模块和Order模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以把这2个模块单独分开来,当user需要调用order的时候,order是一个服务方,但是order需要调用user的时候,user又是服务方了, 所以,它们并不在乎谁是服务方谁是调用方,他们都是2个独立的服务,这就是微服务的概念;
5.经典面试题
经典面试:分布式和微服务有什么区别?
分布式,就是将巨大的一个系统划分为多个模块,这一点和微服务是一样的,都是要把系统进行拆分,部署到不同机器上,因为一台机器可能承受不了这么大的访问压力,或者说要支撑这么大的访问压力需要采购一台性能超级好的服务器,其财务成本非常高,有这些预算完全可以采购很多台普通的服务器了,分布式系统各个模块通过接口进行数据交互,其实分布式也是一种微服务,因为都是把模块拆分变为独立的单元,提供接口来调用,那么它们本质的区别是什么?它们的本质的区别体现在“目标”上, 何为目标,就是你采用分布式架构或者采用微服务架构,你最终是为了什么,要达到什么目的?分布式架构的目标是什么? 就是访问量很大一台机器承受不了,或者是成本问题,不得不使用多台机器来完成服务的部署?而微服务的目标是什么?只是让各个模块拆分开来,不会被互相影响,比如模块的升级或者出现BUG或者是重构等等都不要影响到其他模块,微服务它是可以在一台机器上部署;但是:分布式也是微服务的一种,微服务也属于分布式;
面试:微服务与Spring-Cloud的关系或区别?
微服务只是一种项目的架构方式、架构理念,或者说是一种概念,就如同我们的MVC架构一样, 那么Spring Cloud便是对这种架构方式的技术落地实现;
面试:微服务一定要使用Spring Cloud吗?
微服务只是一种项目的架构方式、架构理念,所以任何技术都可以实现这种架构理念,只是微服务架构里面有很多问题需要我们去解决,比如:负载均衡,服务的注册与发现,服务调用,服务路由,服务熔断等等一系列问题,如果你自己从0开始实现微服务的架构理念,那头发都掉光了,所以Spring Cloud 帮我们做了这些事情,Spring Cloud将处理这些问题的的技术全部打包好了,我们只需要开箱即用;
前后端分离 集群负载均衡 分布式 微服务相关推荐
- 服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型
服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型 下面是"黑夜路人"的<大型网站架构优化(PHP)与相关开源软件使用建议> =============== ...
- 图文解说:Nginx+tomcat配置集群负载均衡
图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用 作者:niumd Blog:http://ari.iteye ...
- Niginx 集群负载均衡策略
Niginx 集群负载均衡策略 所需物料 1.Nginx服务 步骤略 本人 nginx version: nginx/1.16.0 2.Java Servlet 测试项目 新建java web 项目, ...
- 搭建集群负载均衡系统
声明:本文是参考大量网上资料以及tigerlei自己的实际操作而写的笔记,仅供大家参考,绝非原创. 搭建集群负载均衡系统 负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务 ...
- 常见的服务器集群负载均衡技术:二三四七层负载均衡,DNS、LVS、F5、nginx负载均衡
服务器集群负载均衡技术 LB:load balance负载均衡器.有时也叫做director. DNS负载均衡 DNS负载均衡,最基础的是轮询方式,循环返回不同的服务器IP地址.可以同时返回多个服务器 ...
- Apache+Tomcat +mod_proxy集群负载均衡及session
序言: 在玩Apache+Tomcat +mod_jk集群负载均衡及session的时候发现,还有一种方式可以实现,就是网上各位大牛们说的mod_proxy反向代理. 实在弄的我的知识细胞洋洋.实 ...
- 全面讲述linux集群负载均衡
学习linux时,你可能会遇到linux集群的问题,这里将介绍linux集群负载均衡的方法,经过仔细整理,在这里拿出来和大家分享一下,希望本文能教会你更多东西. 集群原理 linux集群系统包括集群节 ...
- nginx+双tomcat集群负载均衡(一台机器)
nginx简介 Nginx ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor ...
- 网络技术沙龙:主题:数据库优化、CDN、集群负载均衡(1.9日技术聚会召集)
http://bbs.chinaunix.net/thread-1325584-1-1.html 沙龙:企业网络优化技术论坛(网络运维架构.负载均衡.数据库优化.CDN)(1.9日技术聚会召集) 前不 ...
最新文章
- c语言中floox的头文件,PC-1211袖珍计算机在合成氨厂生产中的应用 第五讲 循环语句(FOR-NEXT语句)...
- 删除数组中指定元素_如何删除PHP数组元素键值并重新排序
- 异常-----freemarker.template.TemplateException: Error executing macro: write
- Linux centos7 Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法
- 解决module ‘numpy‘ has no attribute ‘array‘问题
- 远程恢复服务器,Hyper-V主机启用“远程桌面”功能
- 《Python Cookbook 3rd》笔记(3.11):随机选择
- STL源码剖析 set相关算法
- C语言 va_start 宏 - C语言零基础入门教程
- commons,jsoup,htmlunit,jackson,nekohtml,Object,xalan,xercesImpl,beanutils,lang3,httpclient,jar包下载
- mysql的本地id可以随便设置马_Mysql主从复制原理及搭建
- mysql多表结果合并查询
- Atitit. visual studio vs2003 vs2005 vs2008 VS2010 vs2012 vs2015新特性 新功能.doc
- 读书笔记 - 《资本幕后》
- 渥太华大学计算机专业,加拿大渥太华大学计算机科学排名第四
- 设随机过程{X(t)=Acos(ωt+Θ),t∈(一∞,+∞)},其中A,ω,Θ为相互独立的实随机变量,其中A的均值为2,方差为4,且Θ~U(-π,π),ω~U(-5,5),试问X(t)是否为平稳过程
- mac 下安装Microsoft Remote Desktop远程桌面客户端
- 王者荣耀选手退役后转行Python,自学的那种!网友:中国版“阿甘”
- 迅雷服务器响应超时无法加速,迅雷无法加速敏感资源怎么办?迅雷解除无法加速敏感资源限制教程...
- 服务器操作系统tco的英文全称,云服务器ECS的英文全称
热门文章
- Linux:网络基础配置
- 36. Valid Sudoku数独判断
- Javascript 中的 Function对象
- MySQL 怎么给字符串字段加索引?
- C#编程语言之Unix时间戳转换为本地时间的方法
- Vector反向迭代器使用
- 人工智能,机器学习,深度学习入门好文,强烈推荐
- linux 扩展zhu分区,Linux分区调整(LVM和非LVM环境中扩容和缩小)
- java list 不包含_java判断list是否包含某个值
- forms oracle runtime_Oracle EBS R12 clone 完毕后,登陆到系统,在运行FORMS程序的时候出现FRM-92101...