-
高并发如何解决
1.服务器集群
服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
2.缓存
对于经常访问,使用的数据,将它放入服务器的缓存中,下次查询或调用的时候回先从缓存中进行访问。
浏览器缓存是指当我们使用浏览器访问一些网站页面或者http服务时,根据服务端返回的缓存设置响应头将响应内容缓存到浏览器,下次可以直接使用缓存内容或者仅需要去服务端验证内容是否过期即可。这样的好处可以减少浏览器和服务端之间来回传输的数据量,节省带宽提升性能。
3.微服务
- 一些列的独立的服务共同组成系统
- 单独部署,跑在自己的进程里
- 每个服务为独立的业务开发
- 分布式的管理
简单来说, 微服务的目的是有效的拆分应用,实现敏捷开发和部署 。
服务之间如何通信?
1.同步调用:REST、RPC
2.异步消息调用
4.数据库优化
1.优化数据库的缓存
2.用EXPLAIN使你的SELECT查询更加清晰
3.利用LIMIT 1取得唯一行
4.索引中的检索字段
5.保证连接的索引是相同的类型
6.不要使用BY RAND()命令
7.*尽量避免SELECT 命令。
5.改变硬件条件
6.HTML页面静态化
7.使用synchronizedMap和ConcurrentHashMap并发框架
-
单例模式
特点:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
优点:
一、实例控制
单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
二、灵活性
因为类控制了实例化过程,所以类可以灵活更改实例化过程。
缺点:
一、开销
虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。
二、可能的开发混淆
使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
三、对象生存期
不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。 -
多线程
1.如何实现多线程。
(1).继承Thred类,重写run(),调用start()。
(2).实现Runnable接口,重写run(),调用start()。
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立
网友评论