安全性架构
系统安全往往在设计之初会有考虑,但在项目进度和成本压力下,又容易忽视了安全,不管是主动或被动的。
系统安全设计需要增加成本而又不能直接带来效益,往往只有在系统被攻击、数据泄露、或甲方有聘期第三方安全厂商检测出数据安全问题时,才会关注软件安全问题。
在政企、医疗信息系统、教育信息系统这类由外部厂商开发的信息系统往往存在数据安全问题。
系统安全往往在设计之初会有考虑,但在项目进度和成本压力下,又容易忽视了安全,不管是主动或被动的。
系统安全设计需要增加成本而又不能直接带来效益,往往只有在系统被攻击、数据泄露、或甲方有聘期第三方安全厂商检测出数据安全问题时,才会关注软件安全问题。
在政企、医疗信息系统、教育信息系统这类由外部厂商开发的信息系统往往存在数据安全问题。
原文:Monoliths are not dinosaurs(2023/05/05),译:单体架构并不过时
亚马逊CTO Werner Vogels 的 Blog:https://www.allthingsdistributed.com/
构建可演进的软件系统是一种策略,而非信仰。 必须以开放的心态重新审视你的架构。
在互联网系统架构中,当系统遇到高并发压力带来性能瓶颈时,应用层可以通过水平伸缩采用分布式集群部署来提高系统的处理能力。
而承受着最大处理压力,难以被水平伸缩的是数据存储部分。数据存储是整个系统的底座、基石。数据存储架构的变化往往会导致整个系统架构的改造。所以数据存储架构设计就显得尤其重要。
异步编程是实现程序并发、依赖解耦的一种方式。异步的本质是开启一个新的线程来执行。
异步:即整个业务中的某些逻辑交给不同的线程异步处理,不用等待异步线程的结果就可返回。
同步:即一条线程干到底,在没结束没返回之前不能干其它事情,必须在所有逻辑处理完才能返回。
负载均衡(Load Balance),指将负载(工作任务)进行平衡、分摊到多个操作单元上进行执行。
通过负载均衡,可以将高并发的请求分发到由多台应用服务器组成的一个服务器集群上,从而利用多台服务器资源处理高并发下的计算压力。
负载均衡大的技术方向分硬件负载均衡设计 和 软件负载均衡,硬件设备通常比较贵成本较高,这里主要讲软件实现负载 均衡的实现方案。
Servlet 和基于 Servlet 的容器(例如Tomcat)默认处理请求和处理业务是同一条线程,即有请求进来后,分配一条线程接收并处理请求,并继续执行业务处理,直到所有处理结束才完成响应,线程才会释放。这使得 Servlet 对业务方法的调用变成一种阻塞调用,效率较低。
Servlet3.0 提供了AsyncContex 来异步处理请求,将请求线程与业务处理线程分离。
软件开发行业共识,应该将复杂的软件进行拆分,拆成多个低复杂度的子系统,子系统还可以继续拆分成更小粒度的组件。即软件需要进行模块化,组件化设计。
Java 开发依赖的一个个 Jar 包就是组件。