logo资料库

Web层技术架构设计文档.pdf

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
Web层技术架构设计
一、技术选型
二、技术架构图
三、技术架构说明
1、展示层
1)、Web前端
2)、APP
3)、微信公众号/微信小程序
4)、Restful接口
2、通讯层
3、服务层
1)、Netflix Eureka:
2)、Netflix Hystrix:
3)、Netflix Zuul:
4)、Netflix Archaius:
5)、Spring Cloud Config:
6)、Spring Cloud Bus:
7)、Spring Cloud Sleuth:
8)、Spring Cloud Task:
9)、Apache NiFi:
10)、Spring Cloud Ribbon
11)、Spring Cloud Feign
4、数据层
四、其他
1、用户登录(Shiro)
1)、登录:
2)、token认证访问(accessToken有效):
3)、token认证访问(accessToken失效,refreshToken有效):
4)、accessToken和refreshToken 都失效:
2、日志系统
3、会话治理
Web层技术架构设计 一、技术选型 编号 名称 官网地址 备注 1 2 3 4 5 6 7 8 Spring Boot Spring Cloud Redis Elasticsearch Apache NiFi Shiro Spring Boot 官网地址 Spring Cloud 官网地址 Redis 官网地址 Elastcsearch官网地址 Apache NiFi官网地址 Shiro 官网地址 MyBatis-Plus MyBatis-plus 官网地址 MySQL MySQL 官网地址 二、技术架构图                 三、技术架构说明 系统采用四层架构设计 1、展示层 1)、Web前端
基于HTML/HTML5/Vue/CSS3开发web前端页面,兼容主流浏览器。展现层和数据层完全分离,通过 跨域实现前后端数据通信。 2)、APP android,ios 基于原生或HTML5开发。在app端实现http/https链路请求后端接口,实现数据交换。 3)、微信公众号/微信小程序 微信公众号与微信小程序通过后端接口实现与后端数据通信。 4)、Restful接口 基于特定业务,采用Restful标准接口,对外提供数据服务,Web前端、App和微信公众号/微信小程 序所有的数据通信就是基于此接口来实现。 2、通讯层 基于TCP/HTTP/HTTPS 三种通信方式,实现前后端数据通信。其中,TCP基于Netty实现。 3、服务层 核心业务基于Spring cloud架构实现微服务化。 Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配 置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和 集群状态管理等操作提供了一种简单的开发方式。 微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,Spring Cloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,Spring Cloud做为大管家需要管理好这些微服务。 相关组件如下 1)、Netflix Eureka:
服务中心,微服务的注册与发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现 和故障转移。 2)、Netflix Hystrix: 熔断器,容错管理工具,旨在通过熔断机制控制服务降级和第三方库的节点,从而对延迟和故障提供更强 大的容错能力。   3)、Netflix Zuul: Zuul是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用,Zuul可以通过加载动态 过滤机制,从而实现以下各项功能: 验证与安全保障: 识别面向各类资源的验证要求并拒绝那些与要求不符的请求。 审查与监控: 在边缘位置追踪有意义数据及统计结果,从而为我们带来准确的生产状态结论。 动态路由: 以动态方式根据需要将请求路由至不同后端集群处。 压力测试: 逐渐增加指向集群的负载流量,从而计算性能水平。
负载分配: 为每一种负载类型分配对应容量,并弃用超出限定值的请求。 静态响应处理: 在边缘位置直接建立部分响应,从而避免其流入内部集群。 多区域弹性: 跨越AWS区域进行请求路由,旨在实现ELB使用多样化并保证边缘位置与使用者尽可 能接近。 4)、Netflix Archaius: 配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机 制等功能。可以实现动态获取配置,原理是每隔60s(默认,可配置)从配置源读取一次内容,这样修 改了配置文件后不需要重启服务就可以使修改后的内容生效,前提使用archaius的API来读取。 5)、Spring Cloud Config: 配置中心,配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存 储、Git以及Subversion。 6)、Spring Cloud Bus: 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合 实现热部署。
7)、Spring Cloud Sleuth: 日志收集工具包,封装了Dapper和log-based追踪以及Zipkin和HTrace操作,为SpringCloud应用实现 了一种分布式追踪解决方案 8)、Spring Cloud Task: 主要解决微服务的任务管理,任务调度的工作,比如某些定时任务晚上就跑一次,或者某项数据分析临 时就跑几次。 9)、Apache NiFi: 将MySQL数据库里指定的表中的数据根据更新时间试试推送到Elasticsearch中,方便用户的全文检索和 生成数据报表。 10)、Spring Cloud Ribbon Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。
11)、Spring Cloud Feign Feign 是一个声明式 WebService 客户端。使用 Feign 能让编写的 WebService 客户端更加简洁,它的 使用方法式定义一个接口,然后在上面添加注解。 Spring Cloud 对 Feign 进行了封装,使其支持了 Spring MVC 标准注解和 HttpMessageConverters。 Feign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡。 4、数据层 mysql:存储事务性数据,以及关联性将强的数据。 Redis:系统缓存。是一个高性能的key-value数据库。 Elasticsearch:全文检索。开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有: 分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负 载等。 四、其他 1、用户登录(Shiro) Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理 用户输入用户名和密码成功登录后,系统自动生成access Token作为用户的身份凭证,用于当 accessToken失效时重新生成。以下是各种登录场景的时序图: 1)、登录:     2)、token认证访问(accessToken有效):
3)、token认证访问(accessToken失效,refreshToken有效):   4)、accessToken和refreshToken 都失效:
2、日志系统 日志集中化管理,采用ELK解决方案。 E-->Elasticsearch L-->Logstash K-->Kibana Elasticsearch:检索日志; Logstash :主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方 式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修 改等操作在一并发往elasticsearch上去; Kibana :也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好 的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。 3、会话治理 此处的会话是指Netty 会话管理。实现Channel自定义会话管理,如会话监控、会话超时、会话重建 等。
分享到:
收藏