首页 > 编程知识 正文

互联网应用架构,互联网架构与应用开发

时间:2023-05-06 07:15:38 阅读:189429 作者:2707

web APP应用体系结构1. Web服务器与APP应用服务器的区别1.1 Web服务器1.2 APP应用服务器1.32种服务器在APP应用体系结构中的层次2.web APP应用体系结构模型2.1体系结构应用程序2.3后台APP应用程序2.4功能要求差异2.5非功能要求差异2.6体系结构原则3 .体系结构演进3.1单机版3。 2双机3.3多机3.4新问题4 .分布式架构演进5 .常见互联网分层架构6. References

web APP应用体系结构1. Web服务器和APP应用服务器之间的差异

Web服务器旨在提供HTTP内容,而APP应用程序服务器也可以提供HTTP内容,但不限于HTTP,还可以提供其他协议支持,如RMI/RPC。

1.1 Web服务器Web服务器的基本功能是提供Web信息浏览服务,只需支持HTTP协议、HTML文档格式和URL。

例如IIS、Apache、Nginx、lighttpd

1.2 APP应用服务器APP应用服务器通常用于处理动态请求。 例如,请求jsp页时,Tomcat APP应用服务器会处理该jsp文件并动态生成html页,然后返回前端或返回Web服务器。

例如WebSphere、WebLogic、JBoss、Tomcat

1.3 APP应用架构中两种服务的层次Web服务在上层,直接面向前端APP,APP应用服务在Web服务的下层,通常Web服务层进行反向代理,外部请求页面实际上,APP应用程序服务层是一个APP应用程序服务器群集,它位于局域网中,不分配公共IP,外部访问并具有公共IP的是Web服务器。

为了提高网站的响应速度,减轻APP应用服务器(Tomcat、Jboss等)的负荷,需要动态隔离。 静态资源的文件(如图像、js和css )可以在反向代理服务器上缓存。 这样,当浏览器请求静态资源时,代理服务器就可以直接处理它,而无需将请求转发给后端服务器。 用户请求的动态文件(如servlet和jsp )将被传输到Tomcat,由Jboss服务器进行处理。

aswebserversarewellsuitedforstaticcontentandappserversfordynamiccontent、 mostoftheproductionenvironmentshavewebserveractingasreverseproxytoappserver.thatmeanswhileservicingapagerequest,状态控制器areservedbywebserverthatinterpretstherequest.usingsomekindoffilteringtechnique (mostlyextensionofrequestedresource )。 webserveridentifiesdynamiccontentrequestandtransparentlyforwardstoappserver。

在大多数生产环境中,web服务器用作APP应用程序服务器的反向代理,因为web服务器适合提供静态内容,而APP应用程序服务器适合提供动态内容。 也就是说,页面请求时,web服务器通过提供图像/静态HTML等静态内容来解释请求,另外,使用某种过滤技术(主要是请求资源的扩张)识别动态内容请求,透明地传送给APP应用服务器

2.web APP应用体系结构模型2.1体系结构图

2.2前台APP是指互联网用户直接使用的APP

2.3后台APP是指企业内部运营者使用的APP应用,也称为内部管理系统,例如CMS

2.4功能需求不同的前台APP和后台APP面向的用户不同,其功能需求也不同,即使有相同的功能需求,也只是一小部分

2.5不同非功能需求非功能需求的前台APP后台APP注释支持并发数量的用户数量较多,有时不可预测且相对固定,主要由相关运营商使用, 发生的并发行数对于相对固定的前台APP也具有良好的可扩展性,支持水平扩展性能需求的性能要求一般相对较高,如果前台APP没有为后台APP配置更多的资源,则用户可以获得更好的服务前台APP分配的资源要有足够的空间,在洪峰到来时不破坏系统,但前台APP可用得很充分。 数据的实时性通常,允许短时不一致需要强一致性的前台APP采用CAP原理和BASE思想设计,保证可用性,保证数据的最终一致性; 虽然后台APP应用程序将无法再使用相对较低的后台APP应用程序来使用数据事务来保证数据的高一致可用性,并尽可能地实现高可用性,但仍然可以通过与某人合作来手动完成一些事情而前台APP与用户的沟通成本非常高,由于系统不可用造成的损失,导致部署频率非常严重,严格控制APP发布频率,内部协商后,APP的发布会影响用户的使用。 同时,由于后台APP便于用户沟通,可以调整发布时间,前台APP选择利用低峰值发布数据查询的方式,合并普通缓存,尽量使用单表查询实现数据真实通常,一些复杂的相关查询前台APP是为了保证数据

复杂的查询;而后台应用通常会做些大批量的数据查询以及复杂的关联查询,以满足业务的需要安全性高一般前台应用是直接暴露在互联网,需要面对各种风险;而后台应用只能内网访问,风险相对要小些 2.6 架构原则

前台应用与后台应用分离

这里的分离不仅要求部署是分离的,业务相关的代码也是完全分离。

前端与后端进行分离

为了满足不同用户的需求,前端可多种不同的实现,如PC Web页面、H5页面、Android APP、IOS APP,以及各种小程序等。前端与后端的交互通过后端暴露的接口实现,后端接口层可以依赖多个服务,可以组合多个服务的数据返回给前端应用,使用接口层可以屏蔽调用服务的复杂性并实现复用。

构建服务应坚持的原则

一个服务只依赖一个数据库每个服务只依赖单个缓存服务,使依赖更简单,避免相互之间的冲突

前台应用的服务与后台应用的服务通过MQ进行解耦

架构的主要目标是解耦,其次才是复用

3. 架构演进 3.1 单机

简单Web应用

访问量小Apache/php/Mysql在同一主机上瓶颈
通常先出现在数据库,然后才是Apache/php硬盘I/O (Innodb) 或MyISAM锁等待

3.2 双机 访问量逐渐增大Apache/php在Server A;MySQL在Server B瓶颈
硬盘 I/O (Innodb) 或MyISAM锁等待网络 I/O

3.3 多机 访问量继续增大MySQL主从复制及读写分离(master负责insert、update、delete,slave负责select)select,insert / update / delete可以在应用程序内指定访问不同服务器(如使用不同的handle或db adapter)Web Server可能需要使用负载均衡

3.4 新问题

Mysql 每台Slave数据完全一样,有的忙,有的闲;数据量越来越大,单表过大,查询效率太低

通常采用memcached、redis缓存数据,Mysql水平扩展(分库、分表)

Web Server负载过高

静态文件缓存 Squid / Varnish / CDN;负载均衡

4. 分布式架构演进

https://www.jianshu.com/p/ab35b6d74fed

5. 常见的互联网分层架构

58沈剑 互联网高可用架构技术实践

https://gitbook.cn/books/583c1335c7f2666319396f7f/index.html

https://mp.weixin.qq.com/s/8HZoFCYoqVnKUAAkZrwcjw

https://blog.csdn.net/djr2ss666666/article/details/79619080

6. References

https://blog.csdn.net/zhengchao1991/article/details/52131496

https://www.zhihu.com/question/20096067

https://cloud.tencent.com/developer/article/1008822

https://www.slideshare.net/thinkinlamp/ss-6168749

https://www.jianshu.com/p/ab35b6d74fed

https://gitbook.cn/books/583c1335c7f2666319396f7f/index.html

https://mp.weixin.qq.com/s/8HZoFCYoqVnKUAAkZrwcjw

https://blog.csdn.net/djr2ss666666/article/details/79619080

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。