J2EE架构
1.实际项目中项目存在的形式:
1.1开发方式
1.1.1后台代码和jsp代码一起部署在中间件(代码托管?)中,通过浏览器访问
1.2前后端分离,做controller,提供资源地址,把前端想要的数据封装到json中,(HTML5很方便的打包成App)
1.2架构方式
1.2.1 单一系统
1.2.2 微服务器开发(添加新功能,用分布式添加一个新系统){
异步交互:MQ
同步交互:RPC(cloud/dubbo)/WebService/Http
}
1.3部署方式
1.3.1 单一服务器
1.3.2 集群/负载均衡(使用到了路由转发)
SpringBoot
可以快速开发项目
遵循它的规范就可以减少不必要的配置
因为其开发简单效率高,经常用于开发微服务
shiro
1.配置URL
2.配置回调函数
HttpClient
网络爬虫
服务器调用其他浏览器数据,代替JsonP?
服务器与服务器进行通讯
webService
dubbo
noSQL(Redis)
集群
linux
单点登录
分布式(服务器之间的通讯)
1.1Tcp协议(服务器之间交流建议使用)
1.1.1 Dubbo(RPC标准)
使用socket进行传输
注册服务器Zookeeper(用来维护服务器之间的关系,类似于交换机)
(1)导包(zookeeper/dubbo/client)
(2)启动注册服务器
zoo.cfg
修改端口号
观察者,内部使用树结构
(2)dubbo服务器
类
配置(提供信息/注册服务器地址/端口号/需要暴露的接口)
(3)客户端
类(接口,包名类名和服务器一样)
配置(提供信息/服务器/端口号/需要暴露的接口check=false,Spring用的Id)
1.1.2 MQ
1.1.3 Cloud
1.2Http协议(只需要获取使用)
1.2.1 HttpClient
HttpClient httpClient = HttpClients.createDefault();
HttpGet get = new HttpGet(path);
HttpResponse response = httpClient.execute(get);
// 获得返回内容
HttpEntity entity = response.getEntity();
// 把内容转换为字符串
String str = EntityUtils.toString(entity, "UTF-8");
1.2.2 WebService SOAP(简单的对象访问协议)
使用tcp xml传输
RPC远程调用过程,使用XML传输跨平台,会有安全问题
所以创建了SOAP
(1)产生 wsdl
Endpoint.publish("http://192.168.1.188:8080/getMessage", new GetMessageImpl());
浏览器访问即可:+wsdl(http://192.168.1.188:8080/getMessage?wsdl)
Spring Cxf
(2)使用MyEclipse根据XML生成相关的类
创建GetMessageImpl类(由GetMessageImplService生成),调用约定的方法
负载均衡
负载均衡机制
集群和负载均衡{
1.集群是多个服务器组合成一个系统,对外看是一个系统
2.负载均衡是多个服务器代码相同
session同步/同一个IP访问同一个服务器
1.nginx
2.配置 upstream 域名 注册的服务器
ip_hash 使用ip来分派不同步session
3.listen 端口
}
总结
服务器搭建:
1.集群(使用RPC,WS,MQ等方式通讯),外部看来是一个系统
2.负载均衡 多个服务器代码相同
1.session 同步
2.固定IP
数据库
NOSQL
关系型数据库
非关系型数据库
mongoSQL
Redis
key-value/效率很高
支持String/list/set/zset
key-value模式:value可以存放二进制,可以设置过期时间
hset key-filed-value 存放对象
list 队列和堆栈的形式
set 集合,可以求差集和并集
sort set 有序集合 排行版
订阅发布 publish/psubscribe
...
运用场景
jedis
java来使用redis
内存数据库
SQLite
数据库 主从分离
主数据库 CRUD
从数据库 READ
单点登录
多系统共存的情况下 用户在一个地方登陆就不用在其他地方登陆
jsonP实现单点登录