一、技术路线:
1.1. spring cloud
1.1.1. 技术描述
微服务:就是把一个单体项目,拆分为多个微服务,每个微服务可以独立技术选型,独立开发,独立部署,独立运维.并且多个服务相互协调,相互配合,最终完成用户的价值.
Spring cloud是一个基于Spring Boot实现的服务治理工具包,在微服务架构中用于管理和协调服务的。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署,架构图如1.1.1。
1.1.2.技术特点
优点:
1)通过分解巨大单体式应用为多个服务方法解决了复杂性问题,每个微服务相对较小。
2)每个单体应用不局限于固定的技术栈,开发者可以自由选择开发技术,提供API服务。
3)每个微服务独立的开发,部署。
4)单一职责功能,每个服务都很简单,只关注于一个业务功能。
5)易于规模化开发,多个开发团队可以并行开发,每个团队负责一项服务。
6)改善故障隔离。一个服务宕机不会影响其他的服务。
缺点:
1)测试工作更加困难。
2)需要采用服务间的通讯机制。
3)很难在不采用分布式事务的情况下跨服务实现功能。
4)跨服务实现要求功能要求团队之间的紧密协作 。
1.1.1
1.2. spring boot
1.2.1. 技术描述
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置(约定优于配置),从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者
1.2.3. 技术特点
优点:
1)创建独立的Spring applications
2)能够使用内嵌的Tomcat, Jetty or Undertow,
3)不需要部署war
4)提供定制化的starter poms来简化maven配置(gradle相同)
5)追求极致的自动配置Spring
6)提供一些生产环境的特性,比如特征指标,健康检查和外部配置。
1.3. rabbitMq
1.3.1. 技术描述
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
1.3.2. 技术特点
优点:
1)支持集群化、高可用部署架构、消息高可靠支持
2)复杂系统的解耦;
3)复杂链路的异步调用
4)瞬时高峰的削峰处理。
缺点:
1)系统可用性降低
2)系统复杂度提高
3)一致性问题
1.4. apollo
1.4.1. 技术描述
因为如今程序功能越来越复杂,程序的配置日益增多:各种功能的开关、参数配置、服务器地址、数据库链接等。对于配置的期望值越来越高:配置修改后实时生效、灰度发布、分环境、分集群管理配置、完善的权限、审核机制等。所以传统的配置文件越来越无法满足开发人员的需求。于是就有了 Apollo。
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
1.4.3. 技术特点
优点:
1)同意管理不同环境、不同集群的配置
2)配置修改实时生效(热发布)
3)版本发布管理--所有配置都有版本概念,便于配置的回滚
4)提供java和.net原生客户端,方便应用集成
5)提供开放平套API
1.5. web socket
1.5.1. 技术描述
众所周知,在WebSocket出现之前,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。而基于WebSocket 协议实现的客户端和服务器之简的通信,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
WebSocket是基于TCP的一种新的网络协议,并在2011年被IETF定为标准的全双工通信协议,它实现了客户端与服务器全双工通信。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
1.5.2. 技术特点
优点:
1)建立在 TCP 协议之上,服务器端的实现比较容易。
2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 3)协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
4)数据格式比较轻量,性能开销小,通信高效。
5)可以发送文本,也可以发送二进制数据。
6)没有同源限制,客户端可以与任意服务器通信。
1.6. 文件
1.6.1. 技术描述
文件接口定义了服务端与客户端文件存放路径、文件名命名规则和文件格式,并开放相应的读/写操作权限。同时能够处理压缩包并处理压缩包中文件。
1.6.2. 技术特点
优点:
1)实时、高效和安全可靠地传送批量数据。
2)断点续传功能。
3)数据压缩传输。
4)传输过程中的差错控制。
二、基本要求:
在当前的大环境下,健壮的系统应有
1、强大的功能,充足满足用户的需求。
2、精准的数据流转,避免数据的丢失,错误。
2、快速的迭代架构,能够及时对需求的开发和迭代。
3、接口应实现对外部系统的接入提供企业级的支持,在系统的高并发和大容量的基础上提供安全可靠的接入。
4、提供完善的信息安全机制,以实现对信息的全面保护,保证系统的正常运行,应防止大量访问,以及大量占用资源的情况发生,保证系统的健壮性。
5、提供有效的系统的可监控机制,使得接口的运行情况可监控,便于及时发现错误及排除故障。
6、保证在充分利用系统资源的前提下,实现系统平滑的移植和扩展,同时在系统并发增加时提供系统资源的动态扩展,以保证系统的稳定性。
7、在进行扩容、新业务扩展时,应能提供快速、方便和准确的实现方式。
三、安全要求:
1)票据验证:为了保证系统的安全运行,各种接口方式都应该保证其接入的安全性。通过鉴权实现接口接入的安全,每个请求头都需要携带服务器发放的票据,只有票据通过验证才能调用接口。
2)信息加密:所有敏感信息都需要通过加密后传递,防止中途被截取,从而暴露用户私密信息。
3)入侵检测:使用nginx通过限流、缓存、黑白名单等方式对请求进行拦截,从而检测到非法的入侵。
4)sql注入:严格检查sql语法,防止sql注入带来的风险。
5)ip记录:存放每个访问者的ip地址,同时可以对每个在线用户进行操作。
6)日志记录:对请求进行记录,从而对数据流向能够充足的掌握。
四、调用方式:
接口基本采用了同步请求/应答方式、异步请求/应答方式、会话方式、广播通知方式、事件订阅方式、可靠消息传输方式、文件传输等通讯方式:
1、同步请求/应答方式:客户端向服务器端发送服务请求,客户端阻塞等待服务器端返回处理结果;例:普通的调用接口方式。
2、异步请求/应答方式:客户端向服务器端发送服务请求,与同步方式不同的是,在此方式下,服务器端处理请求时,客户端继续运行;当服务器端处理结束时返回处理结果;例:通过架构的异步注解调用。
3、会话方式:客户端与服务器端建立连接后,可以多次发送或接收数据,同时存储信息的上下文关系;例:通过web socket方式建立前后台连接。
4、广播通知方式:由服务器端主动向客户端以单个或批量方式发出未经客户端请求的广播或通知消息,客户端可在适当的时候检查是否收到消息并定义收到消息后所采取的动作;
例:通过web socket通知所有用户消息。
5、事件订阅方式:客户端可事先向服务器端订阅自定义的事件,当这些事件发生时,服务器端通知客户端事件发生,客户端可采取相应处理。事件订阅方式使客户端拥有了个性化的事件触发功能,极大方便了客户端及时响应所订阅的事件;例:通过审批流进行订阅管理。
6、文件传输:客户端和服务器端通过文件的方式来传输消息,并采取相应处理;
7、可靠消息传输:在接口通讯中,基于消息的传输处理方式,除了可采用以上几种通讯方式外,还可采用可靠消息传输方式,即通过存储队列方式,客户端和服务器端来传输消息,采取相应处理。例:通过rabbitmq建立信息的存储队列。
五、功能服务内容:
六、数据服务内容:
1)精准的数据流转,简单明了的数据流程。
2)简洁的数据处理,包括模糊查询,筛选,排序,分类,汇总等功能。
3)可视化的数据显示,通过饼图,曲线图,柱状图等多种呈现方式,使数据更加丰满。
4)数据权限,区域权限保证在数据在系统中的安全性,使用户各司其职。
5)异步,消息队列,多线程等技术保证了数据响应时间,大大提升用户体验。
6)数据可以通过模型,excel,数据库,系统等多个途径收集。
7)强大的数据日志,可以快速定位责任人。
七、接口技术优势
1)使用spring boot,spring cloud套件,作为市面上最火热的技术,spring开源文档数量多,功能强大,开发周期短,满足敏捷开发的理念。
2)多种接口调用方式,满足绝大部分场景。
3)多种安全策略,保证数据安全。
4)通过mq等技术保证接口的响应速度,提高用户体验。
5)完备的接口文档,简单易懂的出入参。