SOA分布式架构的八级优化方案

第一级优化:数据库的优化

1.集群(主备、读写分离,----如何实现读写分离?(aop来实现,中间件mycat来实现)) 

2.分表、分库(应对大数据量)

3.开启缓存(将数据暂时放入内存中)

4.开启索引查询

5.数据库表的设计(尽量不要让表的关系不要太复杂)

6.sql语句的优化


数据库不能解决所有问题,随着读取数据库的并发压力的增加,数据库集群也越来越难以处理频繁的io操作。不能无限制的构建mysql集群,?不行,集群也是会有他的瓶颈。 因此要考虑别的优化。(加redis缓存)
为了进一步减轻数据库压力:redis缓存

第二级优化、redis缓存服务优化

1.减轻数据库压力
2.提高查询效率,(内存版的nosql数据库,读取效率每秒11w次,最基本的服务器。17年双十一阿里的并发为38w,因此redis的查询效率是相当快的,)
3.并发能力提高
redis 是 nosql内存版的数据库:
1.内存数据库(内存存满了,内存淘汰策略)
2.存储原理(通过hash槽进行存储)
3.线程安全(单线程数据库,虽然是单线程,但是它是基于内存的nosql数据库,它的查询速率相当的高)最大的特性就是单线程。

第三级优化、使用solr进行搜索

1.减轻了数据库的压力,
2.提高查询效率(查询索引)
3.并发能力提高
面试:
1.索引库的维护?添加(扩展词汇、停用词汇、动态)、同步索引库、删除
2.solr集群(运维人员)
》集群的特性
》集群api
》zookeeper特性,数据节点4种类型(临时节点)
了解:每个节点是有生命周期的,这取决于节点的类型。在ZooKeeper中,节点类型可以分为持久节点(PERSISTENT )、临时节点(EPHEMERAL),以及时序节点(SEQUENTIAL ),具体在节点创建过程中,一般是组合使用,可以生成以下4种节点类型:
持久节点(PERSISTENT)
所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。
持久顺序节点(PERSISTENT_SEQUENTIAL )
这类节点的基本特性和上面的节点类型是一致的。额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK会自动为给定节点名加上一个数字后缀,作为新的节点名。这个数字后缀的上限是整型的最大值。
临时节点(EPHEMERAL )
和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非连接断开。另外,在临时节点下面不能创建子节点。

临时顺序节点(EPHEMERAL_SEQUENTIAL)


前三级是数据层面的优化。


下面是项目层的优化  面向服务的分布式架构SOA


第四级优化:面向服务架构优化

1.分担服务器的压力
2.提高项目并发能力


代码优化:java程序的性能调优,
1.设计模式(掌握基本的设计模式)?
2.垃圾回收gc ?
3.多线程问题?(线程池,安全性问题,线程锁)
4.jvm优化,
5.tomcat服务器的优化

第五级优化:引入第三方文件系统存储图片

fastDFS分布式文件系统
1.减轻项目压力
2.提高文件加载速度


图片碎片化存储
图片水印 


第六级优化:activeMQ消息总线,(异步通信)

activemq消息中间件
1.流量削峰(秒杀)
2.提高用户并发能力

应用层优化:


第七级优化:  商品详情静态页面/动静分离   静态页面服务器

通过nginx服务器来访问静态页面
html
css
js


1.提高查询效率(查询静态页面,和后台服务没有交互)
2.提高并发能力



第八级优化:nginx负载/http服务器

1.提高并发能力
2.提高加载速度

猜你喜欢

转载自blog.csdn.net/weixin_39559282/article/details/79087932
今日推荐