京淘项目

架构设计

互联网行业特定

1.高并发
2.分布式 服务器数量分配均衡
3.海量数据处理 采用更加高效的方式进行数据处理 大数据方向 java开发岗位 要求大数据相关技术.
4.安全性问题: 网贷(11%) 交易的安全性(区块链)

阿里风控系统: 1.手机号是否变更
              2.交易密码是否变更
              3.银行交易是否频繁
              4.交易之间的双方是否有资金往来…
              5.交易双方是否为好友关系.             

京淘项目_第1张图片

ORM思想

介绍:对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。
ORM方式: 以对象的方法操作数据库, 可以实现结果集与对象的自动的映射 不需要自己手写.

AJAX原理

特点: 局部刷新:异步调用(加载)
调用原理说明:
1.用户将请求发给AJAX引擎进行处理.之后等待引擎返回数据.
2.ajax引擎接收到用户的请求之后,代替用户访问后端服务器.
3.后端服务器接收请求之后,执行业务处理. 并且将返回值返回.
4.ajax引擎收到返回值结果之后,要在第一时间通知给用户. 利用回调函数将数据传给客户端.ajax调用成功.
---ajax嵌套问题
说明: 如果在ajax内部再次嵌套ajax请求,则需要将内部的ajax请求设置为同步状态.
俗语: 赶紧走吧 赶不上二路公交车了…
核心原因: 页面需要刷新2次都是只刷新一次.

分布式

分类

  1. 分布式计算
    说明: 一项任务由多个服务器共同完成的.
    例子: 假设一项任务单独完成需要10天,如果有10个人同时执行则一天完成. 大数据处理技术.
  2. 分布式系统
    说明: 将项目按照特定的功能模块及层级进行拆分.从而降低整个系统架构的耦合性问题.

项目拆分核心:无论将来项目怎么拆分,都是同一个系统. 口诀: 对外统一,对内相互独立.

伪静态

伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好性,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好性。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。伪静态技术是指展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。

同源策略

规定: 如果浏览器的地址与Ajax的请求地址 协议名称://域名地址:端口号 如果都相同则满足同源策略.浏览器可以正常的解析返回值. 如果三者之间有一个不同,则违反了同源策略.浏览器不会解析返回值.
京淘项目_第2张图片

什么是跨域

由于业务需要,通常A服务器中的数据可能来源于B服务器. 当浏览器通过网址解析页面时,如果页面内部发起ajax请求.如果浏览器的访问地址与Ajax访问地址不满足同源策略时,则称之为跨域请求.
跨域要素:
1.浏览器
2.解析ajax
3.违反了同源策略
----关于跨域说明
1.什么叫跨域 浏览器解析Ajax时,发起url请求违反了同源策略时,称之为跨域.
2.什么时候用跨域 一般A服务器需要从B服务器中获取数据时,可以采用跨域的方式.
3.什么是JSONP JSONP是JSON的一种使用模式 利用javaScript中的src属性进行跨域请求.(2.自定义回调函数,3.将返回值进行特殊格式封装)
4.什么是CORS CORS是当前实现跨域的主流方式,现在所有的主流浏览器都支持,需要在服务器端配置是否允许跨域的配置. 只要配置了(在响应头中添加允许跨域的标识),则同源策略不生效,则可以实现跨域.

HttpClient

HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。
京淘项目_第3张图片

SOA思想

SOA思想介绍:
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
京淘项目_第4张图片

RPC介绍

RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务
本地过程调用:如果需要将本地student对象的age+1,可以实现一个addAge()方法,将student对象传入,对年龄进行更新之后返回即可,本地方法调用的函数体通过函数指针来指定。
远程过程调用:addAge方法在其他的服务器中,如果需要调用则必须通过远程的方式通知其他服务器帮我完成业务调用.

总结: 利用第三方的服务器,帮我完成业务调用的过程.
理解: 分布式环境中 业务调用几乎都是RPC的.

什么是微服务?

说明:

  1. 为了降低代码的耦合性,将项目进行了拆分.按照功能模块拆分为若干个项目.该项目称之为服务.(分布式思想).
  2. 如果采用微服务的结构,要求服务器如果出现了故障应该实现自动化的故障的迁移(高可用HA)

京淘项目_第5张图片
实现步骤:

  1. 服务提供者启动时,.将自己的信息注册到注册中心中.
  2. 注册中心接受到了用户的请求之后,更新服务列表信息.
  3. 当消费者启动时,首先会链接注册中心,获取服务列表数据.
  4. 注册中心将自己的服务列表信息同步给客户端(消费者)
  5. 消费者接收到服务列表数据之后,将信息保存到自己的本地.方便下次调用
  6. 当消费者接收到用户的请求时,根据自己服务列表的信息进行负载均衡的操作,选择其中一个服务的提供者,根据IP:PORT 进行RPC调用.
  7. 当服务提供者宕机时,注册中心会有心跳检测机制,如果检查宕机,则更新本地的服务列表数据,并且全网广播通知所有的消费者更新服务列表.

Dubbo负载均衡

负载均衡方式

1.服务端负载均衡(集中式负载均衡)
说明: 用户访问服务器时不清楚真实的服务器到底是谁,由负载均衡服务器动态动态管理.
典型代表: NGINX
一般nginx服务器做反向代理使用,负载均衡只是提供的功能.

2.客户端负载均衡
说明:采用微服务架构时,当消费者访问服务提供者时,由于框架内部已经实现了负载均衡的策略,所以消费者访问提供者时已经完成了负载均衡的机制.所以将所有的压力平衡到了各个消费者中.
京淘项目_第6张图片

单点登录

用户只需一次登录就可以访问所有相互信任的应用系统。这种方式减少了由登录产生的时间消耗,辅助了用户管理,是目前比较流行的.
京淘项目_第7张图片

拦截器
京淘项目_第8张图片

Linux项目部署说明 流程图

京淘项目_第9张图片

数据库读写分离/负载均衡实现

image.png

说明:通过缓存服务器可以有效的提升用户的访问的效率

image.png


你可能感兴趣的