高可用的系统架构
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
原因一:硬件故障
原因二:软件bug
原因三:系统发布
原因四:并发压力
原因五:网络攻击
原因六:外部灾害
解决方案:
解耦
高内聚低耦合的组件设计原则
面向对象的基本设计原则
面向对象的设计模式
领域驱动的设计建模
隔离
业务与子系统隔离
微服务与中泰架构
生产者消费者隔离
虚拟机与容器隔离
异步
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份
采用集群的设计,复制数据和应用服务存在于多个服务器上
失效转移
for无状态应用:通过负载均衡实现对一个服务器集群(2台及以上服务器)高可用访问
for数据:通过数据备份保证数据有多个副本,当一个副本失效时可以及时切换访问另一个副本
幂等
针对服务重复调用的情况,需要在服务层保证服务重复调用和调用一次产生的结果相同。可采用对请求服务的内容信息进行校验的方法,避免一些绝对不可以重复的操作,如转账服务。
事务补偿
重试
在既定的超时时间之后可以尝试再次请求。以自发修复一些因为线程阻塞,垃圾回收或者网络抖动而没有及时返回响应的故障
熔断
在某个服务出现故障的时候使用断路器阻断对该服务的调用,以免更多的请求被阻塞。
限流
对进入系统的用户请求进行流量控制。参考限流算法:计数器算法(固定窗口,滑动窗口),令牌桶算法,漏桶算法
自适应限流
降级
在系统高并发的时刻里临时关闭一些非紧要非核心的系统业务,以空出更多的资源进行周转。
异地多活
将数据中心分布在多个不同地点的机房,每个机房都提供完整的系统服务,用户可以连接任意的机房进行访问。
网站安全架构与网站的高可用架构。
常见安全问题:
XSS攻击
Solution: 对请求参数进行消毒。
SQL注入攻击:发送含有恶意SQL命令的http请求
Solution: 对请求参数进行消毒。
CSRF攻击:伪造用户请求
Solution: 主要就是需要组织攻击者获得所有请求参数的可能,可以使用表单Token,在页面保单中增加一个随机数Token , 每次请求的Token都不相同,请求提交后检查Token的值是否正确以确定请求提交者是否合法。
Error Code:错误回显,将系统报错信息直接显示在客户端界面,为黑客提供了系统的漏洞信息
Solution: 通过配置Web服务器参数,跳转500页面到专门的错误页面即可。
Html注释 :开发人员如果在PHP,JSP等服务器页面程序中使用HTML注释语法进项程序注释,这些注释也会显示在客户端浏览器中。所以需要避免这样的工作习惯。
信息加密技术
单向散列加密(普通密码..)
对称加密(信用卡信息..)
非对称加密(区块链..)
版权声明: 本文为 InfoQ 作者【莫莫大人】的原创文章。
原文链接:【http://xie.infoq.cn/article/bed886d1d8522f79e63e89431】。文章转载请联系作者。
评论