分布式思维笔记

一、java语言的主流方向

java编程里,两个难点:高并发/高可用

java语言 ,后期主要就是学习  java架构,

 

二、计算机与互联网的发展

apache 第web服务器:静态网页服务器----1995年。

lamp组合,开启互联网的大门。

 

三、互联网的行业变迁

web1.0:少数人员发布信息,大众接收信息。资讯类,主要是静态的网页,推送信息的,没有与用户的互动

web2.0:rss订阅。用户和服务器有互动。

 

客户端与服务器的交互模式:

b/s结构,服务方式。   

c/s方式:

 

四、集群与分布式的区别

集群:复制模式,每台机器做一样的事情。

分布式:两台机器分工合作,每台机器做的事情不一样。 业务流:A-->B--->C

 

五、浏览器请求服务器的过程

1、先请求DNS解析域名得到ip,再通过ip请求目标服务器。

 

例如:

更改本地host:-------》达到更改目标机器:欺骗浏览器,让以为我指定机器是DNS机器

自己做试验:

HOTS: 127.0.0.1  www.baidu.com

 

2、浏览器渲染出一个页面的过程:

浏览器----》解析本地html文件

解析服务器返回的网站内容。

对浏览器解析渲染页面来,上述两种方式得到的结果,是没有区别的。

 

六、网站开发的模式变迁

1、数据库开发网站:

   数据库表user   -----》 html模板里。

jsp开发:页面级/request/session/全局。  -------》 jsp页面  ${name}

 

2、数据库的操作,主要:增删改查。

主要压力来自查询:多个表联合,数据量膨胀。

如:  select * from A,B.

  A表           B表

   1                                 4

       2                                 5

       2                                 6

上述的一条sql,其结果是A/B两表记录的笛卡尔乘积。

此时,A表若新增一条数据,整体查询计算量是几何级上升的:查询量 = A 表量 * B表量

 

3、 服务器的集群拓展

如果商品服务抗不住,----》集群解决:把整个服务复制一份。

 

七、java项目的分布式的拓展方案:

 

1、早期是一个war包,现在把service层压力大的service独立成单独出来,成为独立服务部署(jar包启动)

2、单独出来的服务,可以以集群模式复制拓展,这样的复制性价比较高。

3、大量的服务被独立出来后,这些独立的服务,就成为一个服务层网络。

 

八、微服务模式的拓展:

 

1、早期是一个war包,现把商品服务的control和service和dao全拆出,独立为一个服务。商品表也从数据库独立出来,成为一个独立商品数据库。

2、此时的商品服务,能够直接接收http请求,为前台服务。这样的一个完整服务,称之为微服务。

3、微服务易于上架下架,而不与其它模块逻辑迁连。

 

九、服务治理:

1、无论是分布式拆分,还是微服务拆分,最后形成的服务层应用,都需要相互之间调用。

2、这种服务间调用是跨系统的。跨系统调用rpc有很多协议: RMI,webservice,http请求,网络达到服务间访问。

dubbo:很多,dubbo协议

springcloud:使用http协议通信

3、服务集群,有负载路由。需要服务发现--zookeeper。

4、数据积累大:订单服务---积累。

-------分库/分表  -----需要修改业务sql语句。(有侵入性)-----------》mycat中间件

+   /分区。   -------》对sql语是没有侵入性。------------》对库没办法减压。

 

十、架构一个系统依据:

1、系统目标是并发数(tps)多少:tomcat的安全连接数在500tps上下

2、系统要承受的数据量级:mysql --- 单表到达 700W,性能会急剧下降。

3、并发数(tps) transation per seconds:每秒钟的访问---每秒处理事务数

 

 

十一、前端发展:

1、一个url   ----------------  一个html页面  ---------》点击按钮跳转 --------》页面跳转。

2、页面,ajax方式刷新页面。

3、mvvm的开发流程

 

a、前端人员开发的程序包放在静态服务器里

b、浏览器访问静态服务器,得到前端html

c、html页面发起ajax请求到后台服务器,得到业务数据,渲染出页面。

 

十二、全网站搜索:

不指定业务表的搜索,任何一个中数据 like 匹配。

es/solr搜索中间件。

 

十三、架构方案:

1、首先考虑缓存方案解决性能问题

2、集群模式------比较重的模式:浪费成本

3、用分布式

 

十四、缓存解决方案

 

a、缓存服务器:redis、memcache,可以查询一下他俩的区别

 

十四、集群引起的负载问题方案,如何session共享:

1、tomcat自己插件,能够session共享

2、spring-session插件,实现session共享。

 

十五、空间换时间的方案

有一个模式:jdk有一个future模式,自带高并发的轮询模式。

 

十六、大数据量的切片方案

数据分片:数据的路由保持不变

 

1、设置数据片数量,比如100个柱

2、当前库,均分这100个柱

3、当加库扩容时,这100个柱动态迁移

 

100万的用户,

张三,数据查询时,------redis集群,----此时路由层知道张三的数据存在哪个柱上。

----- 数据和柱的对应关系,扩容时,此关系不变

 

1、微服务里的数据库,是私有库,对外不开放的。

2、微服务与分布式,是相辅相成的,不互拆。相互之间rpc调用,是无障碍的。

posted on 2019-04-17 22:24  梁凤财Zero  阅读(207)  评论(0编辑  收藏  举报

导航