1 高质量分布式应用:
高性能 ,可伸缩,高可用,低延迟的要求.同时保证一致性,容错性,可恢复性和安全性
- 1:
可伸缩性:
垂直伸缩时降低锁竞争,水平伸缩时常用的分布式缓存,分布式文件系统等方法 - 2:
高可用
: 均衡负载, 构建可容错,对资源使用有限制的系统 - 3: 实现SOA时,可参考的概念:
SCA
,ESB
和业界的实现SCA
ESB
,
1: SCA: Service Component Architecture:
2: ESB:核心思想是基于中间件来实现系统的交互.基于消息中间件所构建的此系统交互的中间场所称为总线
,系统间交互数据采用统一的消息格式,由总线完成消息的转化,路由,发送到相应的目标应用,(1)标准的消息通信格式,ESB系统中要定义系统发送以及接收消息时的消息格式,以便各个系统保持同样的方式与总线通信(2) 消息路由,是指当总线接收到消息后,根据消息中的数据来决定需要调用的系统.更为复杂的情况时,还可以基于消息路由实现功能编排,即当某个功能需要有多个系统共同完成时,可以在总线上以流程的方式编排访问系统的顺序.例如某功能需要首先访问A系统,然后根据A系统返回的结果来决定访问B系统还是C系统 (3)支持多种的消息交互类型: 支持 请求/响应和发布/订阅等方式, 请求/响应方式会更加方便实现同步请求, 发布/订阅方式则以更加方便实现异步的消息广播. (4) 支持多种网络协议,总线要和多个系统进行交互,通常要支持多种网络协议,例如:HTTP/IP UDP/IP HTTP (5)支持多种数据格式并能进行互相转换,多个系统需要发送消息到总线,并由总线将消息转发,但各个系统消息格式可能不一致,此时需要总线支持数据转换.
- 4: classloader结构:
- 5:
JVM
采用了invokestatic(静态) ,invokevirtual (实例),invokeinterface(接口方法)和invokespecial(调用private方法和编译后的)四个指令来执行不同的方法调用 - 6: 对于方法的指令解释执行,执行方式为经典的FDX循环方式,即:获取下一条指令,解码并分派,然后执行,在实现FDX循环时有: switch-threading,token-threading,direct-threading,subroutine-threding,inline-threading 等多种方式. Sun JDK采用token-threading.也做了一些其它优化: 栈顶缓存,(将栈顶的值缓存在寄存器) (2)部分栈帧共享, (3)在解释执行特殊情况会直接执行机器指令: Math.sin Unsafe.compareAndSwapInt
- 7:
方法区:
存放了要加载类的信息(名称,修饰符等),类中的静态变量,类中定义为final类型的常量,类中的Field信息,类中的方法信息.当开发人员在程序中通过Class对象的getName isInterface等方法来获取信息时.这些数据都来自方法区域. 也是全局共享
- 8:
对象的分配:
(堆
TLAB(Thread Local Allocator ByteBuf) 在eden区
)
-9 :线程的状态: