Web应用技术分类
维度 | 技术内容 |
---|---|
架构 | MVC MVP MWM REST Webservice 微服务 |
缓存 | MemCache Redis |
并发分流 | 集群(负载均衡) CDN |
数据库 | 主从(主从复制) 内存数据库 反规范化技术 NoSQL 分区(表)技术 视图 |
数据编码 | XML JSON |
持久化 | Hibernate Mybatis |
分布存储 | Hadoop FastDFS 区块链 |
web应用 | Apache WebSphere WebLogic Tomcat JBOSS IIS |
安全性 | SQL注入攻击 |
其他 | 有无状态 响应式Web 静态化 中台 |
SOA & ESB
SOA是一个组件模型,一种设计理念,包含多个服务,服务之间通过相互依赖最终提供一系列完整的功能。各各服务通常以独立的形式部署运行,服务之间通过网路进行调用。
ESB:简单来说是一根管道,用来连接各个服务节点。ESB的存在是为例集成基于不同协议的不同服务,ESB做了消息的转化、解释及路由的工作,以此来让不同的服务互联互通。
ESB特点
1、SOA的一种实现方式,ESB在面向服务的架构中起到的是总线作用,将各种服务进行连接与整合;
2、描述服务的元数据和服务注册管理
3、在服务请求者和提供者之间传递数据,以及对这些数据进行转换的能力,并支持由实践中总结出来的一些模式如同步模式、异步模式等
4、发现、路由、匹配和选择的能力,以支持服务之间的动态交互,解耦服务请求者和服务提供者。高级一些的能力,包括对安全的支持、服务质量保证、可管理性和负载平衡等
ESB主要功能
服务位置透明性
传输协议转换
消息格式转换
消息路由
消息增强
安全性
监控与管理
微服务 & 微服务API网关
微服务架构建议将大型复杂的单体架构应用划分为一组微小的服务,每个微服务根据其负责的具体业务职责提炼为单一的业务功能,每个服务可以很容易地部署并发布到生产环境里隔离和独立的进程内部,它可以很容易地扩展和变更,对于一个具体的服务来说可以采用任何适用的语言和工具来快速实现;服务之间基于基础设施互相协同工作。
微服务的优势:
解决了复杂性问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变
让每个服务能够独立开发,开发者能够自由选择可行的技术,让服务来决定API约定
每个微服务都能独立配置,开发者不必协调对于本地服务配置上的变化这种变化一旦测试完成就被配置了
让每个服务都可以独立调整,你可以给每个服务配置正好满足容量和可用性限制的实例数
微服务架构带来的挑战:
并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的。
部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题
性能问题,由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟
数据一致性问题,作为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。
API网关是一个服务器,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和管理服务。
功能 | SOA | 微服务 |
---|---|---|
组件大小 | 大块业务逻辑 | 单独任务或小块业务逻辑 |
耦合 | 通常松耦合 | 总是松耦合 |
公司架构 | 任何类型 | 小型、专注于功能交叉团队 |
管理 | 中央管理 | 分散管理 |
目标 | 确保应用能够交互操作 | 执行新功能、快速拓展开发团队 |
Web系统分层
1.Web服务器技术演变
1)单机到数据库与web服务器分离
2)应用服务器集群
负载均衡技术(session共享 有无状态)、ORM、数据库读写分离
2.缓存技术
3.Redis技术
4.CDN Content Delivery Network
CDN的全称是Content Delivery Network,即内容分发网络
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
5.XML与JSON
扩展标记语言(Extensible Markup Language,XML) ,用于标记电子文件是一种允许使其具有结构性的标记语言,可以用来标记数据、定义数据类型,用户对自己的标记语言进行定义的源语言
XML的优点
格式统一,符合标准
容易与其他系统选行远程交互,数据共享比较方便
XML的缺点
XML文件庞大,文件格式复杂传输占带宽
服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代
码变得异常复杂且不易维护
客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码
JSON(JavaScript Object Notation)一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换
JSON的优点
数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
易于解析,客户端JavaScript可以简单的通过eval0进行JSON数据的读取
支持多种语言,包括ActionScript, C,C#,ColdFusion,Java,JavaScript, PerlPHPPython,Ruby等服务器端语言,便于服务器端的解析
因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,旦完成任务不变,并且易于维护
JSON的缺点 不如xml广泛和通用
6.Web应用服务器
两层意思:
web服务器:职能单一,就是把浏览器发来的Request请求,返回Html页面
应用服务器:业务逻辑处理
无状态服务(stateless service) 对单次请求的处理不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息
有状态服务 (stateful service) 则相反,它会在自身保存一些数据,先后的请求是有关联的。
响应式web设计:是一种网络页面设计布局,其理念是: 集中创建页面的图片排版大小,可以智能地根据用户行为以及使用的设备环境进行相对应的布局
响应式web设计方法与策略
采用流式布局和弹性化设计:使用相对单位,设定百分比而非具体值的方式设置页面元素的大小
响应式图片:不仅要同比的缩放图片,还要在小设备上降低图片自身的分辨率
7.REST
Representational State Transfer 表述性状态转移 只用HTTP和XML进行Web通信的技术,可以降低开发的复杂性,提高系统的可伸缩性。
5原则
网络上所有事务都抽象为资源
每个资源对应一个唯一的资源标识
通过通用的连接件接口对资源进行操作
对资源的各种操作不会改变资源标识
所有的操作都是无状态的
8.中台