大数据正式京淘10
数据库的读写分离
- 电商项目京淘项目的瓶颈有哪些
- 数据库瓶颈
- IO【图片(文件)的上传】
- 单数据库读写--锁、效率低
- 简单改造
- 利用redis减少数据库的压力,从而提升数据库的效率
- 数据库的主从结构
- 主:写数据
- 从:备份数据,同时提供被读取
- Master和Slave的主从复制过程
- 配置
- 主上打开一个二进制日志文件(binary.log),在master写操作时,就会把写的命令存放到这个二进制文件(CUD),slave开启一个IO线程,线程定时读取主节点的二进制文件,将新的命令抓取过来,存放到本地一个中继日志中(relay.log),slave上还有定时启动的线程叫sql,监控本地的中继日志,一旦有新的命令发现,将会把中继日志的命令执行一遍,完成主从备份
- 安装linux的mysql(Percona):可以实现最终的一致性
- 配置
- 数据的一致性
- 强一致性:实时同步
- 弱一致性:慢同步,不及时同步
安装Linux的Percona【MySql】
amoeba
- 图解
-
- 主要功能
- 读写分离
- 负载均衡
- 自定义函数库分库分表:sql繁琐
- 手动配置
- amoeba.xml
-
- dbServer.xml
-
- amoeba.xml
单点登录
- Single Sign On(sso)
- 目前市场比较流行的一种登录的方式
- 单点登录的接口文件:两个系统数据进行调用和传输
- 请求连接地址
- 参数
- 返回数据
SSO功能
- 可以访问数据库
- 登录检查系统
做查询数据的合法性与前台对接
-
-
- 前台:ajax请求
$.ajax({ url : "http://sso.jt.com/user/check/"+escape(pin)+"/1?r=" + Math.random(), dataType : "jsonp", success : function(data) { checkpin = data.data?"1":"0"; if (!data.data) { validateSettings.succeed.run(option); namestate = true; }else { validateSettings.error.run(option, "该用户名已占用!"); namestate = false; } } });
- 后台:返回字符串数【注:返回时是处理过的JSONP数据】
callback_123459876234({"status":200,"msg":"OK","data":false,"ok":true})
权限管理
- 传统的是保存到session中,把数据带到页面进行显示,但是分布式的问题是session不能共享
- sso:解决session共享
- 图解
-
- 解决不同的服务器都可以使用
-
- 图解
整体结构
-
- 结构还路上,未完待续