大家先看这个逻辑图

为什么我们要这样去架构我们的一个项目呢?

这样做的话,动态请求要先访问 A,A 转发访问 B,再由 B 返回结果给 A,A 最后又将结果返回给客户端这样是不是很麻烦?

最初开发的时候是这样的。但是业务逐渐扩大之后你回发现!

这样的好处多多!

第一,为负载均衡做准备,因为随着系统的发展壮大,只用一台 B 来处理动态请求显然是是不够的,要有 B1,B2 等等才行。那么基于图 2 的结构,就可以直接扩展 B1,B2,再修改 Nginx 的配置就可以实现 B1 和 B2 的负载均衡。

第二,对于程序开发而言,这种结构的程序撰写和单台主机没有区别。我们假设只用一台 Tomcat 作为服务器,那么凡是静态资源,如图片、CSS 代码,就需要编写类似这样的访问代码:<img src=”{address of A}/a.jpg”>,当静态资源过多,需要扩展出其他的服务器来安放静态资源时,访问这些资源就可能要编写这样的代码:<img src=”{address of C}/a.jpg”>、<img src=”{address of D}/a.jpg”>。可以看到,当服务器进行变更或扩展时,代码也要随之做出修改,对于程序开发和维护来说非常困难。而基于上面的结构,程序都只 要 <img src=”a.jpg”>,无需关心具体放置资源的服务器地址,因为具体的地址 Nginx 为帮您绑定和选择。

最新文章

  1. ReactNative入门 —— 动画篇(下)
  2. 第二轮冲刺-Runner站立会议05
  3. SQLSERVER的一个不显眼的功能 备份文件的分割
  4. JVM学习笔记:JVM的体系结构与JVM的生命周期
  5. 和阿文一起学H5——H5工具、素材
  6. PHP中刷新输出缓冲
  7. Batik - 将svg转换成其他格式图片或PDF - [导出服务器配置] 导出服务器原理解析
  8. MongoDB 操作手冊CRUD插入
  9. linux的chattr和lsattr命令
  10. 安装node配置环境变量,解决某组件(如cordova,webpack等)“不是内部命令”问题
  11. vue.js之获取当前点击对象(其实是套着vue的原生javascript吧,笑&#128522;)
  12. Java报SQLException
  13. Mybatis配置详解
  14. java自动化-数据驱动junit演示,下篇
  15. kubernetes-deployments
  16. CopyOnWriteArrayList&amp;Collections.synchronizedList()
  17. cobbler启动问题
  18. MongoDB(课时18 修改器)
  19. SharePoint 会话(Session)状态和状态服务
  20. 在Ubuntu中增加root用户登录

热门文章

  1. apt-get 安装软件时出现:“文件尺寸不符” 问题
  2. 一文带你定制unittest测试用例的名称
  3. 结合实体框架(代码优先)、工作单元测试、Web API、ASP. net等,以存储库设计模式开发示例项目。NET MVC 5和引导
  4. 2018年10月份编程语言排行榜(来自TIOBE Index for October 2018)
  5. ubuntu19.10如何设置固定ip
  6. C++虚函数与多继承
  7. 请求https接口时报错:Caused by SSLError(SSLError(1, u&#39;[SSL: CERTIFICATE_VERIFY_FAILED] certificat,安装certifi
  8. 使用composer 显示错误美化
  9. linux(centos8):阿里云ecs配置smtps发邮件(解决不能通过25端口发邮件问题)
  10. 【应用程序见解 Application Insights】在Application Insights中通过自定义查询结果定义指标并显示在Dashboard中