0%

关于spring boot 1.X系列

spring.io在spring boot和springcloud推出之前,开源了很多的框架(见下文附录),但是除了spring framework自身,影响力都不够。直到spring boot、spring cloud系列框架推出,才成了spring框架的扩展中最有影响力的两个(或者说集大成者)。

Spring Boot的设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

通俗点理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了很多的jar包,比如散落在各处的spring框架:spring amqp、spring data redis client、spring web service,进而集大成。

Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态。

从技术实现上来说,也是集成开源届的各种方案比如 client、rabbitmq client、eureka client。

阅读全文 »

关于spring boot 1.X系列

spring.io在spring boot和springcloud推出之前,开源了很多的框架(见下文附录),但是除了spring framework自身,影响力都不够。直到spring boot、spring cloud系列框架推出,才成了spring框架的扩展中最有影响力的两个(或者说集大成者)。
Spring Boot的设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
通俗点理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了很多的jar包,比如散落在各处的spring框架:spring amqp、spring data redis client、spring web service,进而集大成。
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态。
从技术实现上来说,也是集成开源届的各种方案比如 client、rabbitmq client、eureka client。

阅读全文 »

springboot1.5.x web程序的核心类和扩展点

关于spring boot/cloud 1.X系列

spring.io在spring boot和springcloud推出之前,开源了很多的框架(见下文附录),但是除了spring framework自身,影响力都不够。直到spring boot、spring cloud系列框架推出,才成了spring框架的扩展中最有影响力的两个(或者说集大成者)。
Spring Boot的设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。
通俗点理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了很多的jar包,比如散落在各处的spring框架:spring amqp、spring data redis client、spring web service,进而集大成。
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁定,领导选举,分布式会话,集群状态。
从技术实现上来说,也是集成开源届的各种方案比如 client、rabbitmq client、eureka client。

阅读全文 »

本文参考资料

https://docs.spring.io/spring/docs/4.3.0.RELEASE/spring-framework-reference/htmlsingle/
https://docs.spring.io/spring/docs/4.3.0.RELEASE/spring-framework-reference/htmlsingle/#mvc-ann-methods
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes
https://docs.spring.io/spring-boot/docs/1.4.0.RELEASE/reference/htmlsingle/
阅读全文 »

分布式系统已经无处不在

分布式系统渗透到包括金融与商业、信息社会、创意产业和娱乐、医疗保健、教育、交通与物流、科学、环境管理等行业中。
其中,三个典型的案例可以让我们了解到它的存在性和重要性:Web搜索、大型多人在线游戏、金融交易。

Web搜索

Web搜索引擎的任务是为万维网的所有内容建立索引,其中包含上千亿的页面、上万亿的Web地址。google,它代表了计算历史上最大和最复杂的分布式系统之一。最近的数字表明Google一个月的搜索量已经超过1000亿。其中代表性三大论文是整个业界学习的典范。

大型多人在线游戏

它提供一种身临其境的感觉,博主一直认为游戏是最高端软件,也是入行的第一个动力。想想超大数量的用户通过互联网在一个持久的虚拟世界中交互,是一件多么神奇的事情。

金融交易

金融行业一直以其需求处在分布式系统技术的前沿。特别是在实时需求的领域上。它通常再用分布式基于时间的系统。其中,感兴趣数据项被称为事件,而需求就是可靠和及时的传递事件给大量对此信息感兴趣的用户。

分布式系统的挑战

异构性

网络、计算机硬件、操作系统、编程语言、由不同的开发者完成的软件实现都是造成异构性的主因。其中网络的异构通过互联网协议相互通信而被屏蔽;中间件的流行屏蔽的底层网络、硬件、操作系统和编程语言的异构,它为分布式应用和服务器提供了一直的计算模型,包括RPC、远程事件通知、远程SQL访问和分布式事物调用;虚拟机也是使代码到处运行的一种方法。

开放性

它取决于新的资源共享服务能被增加和供多种客户程序使用的程度。特征就是发布系统的关键接口,使其基于一致的通信机制,让不同提供商提供异构硬件和软件。

安全性

包括三个部分:机密性(防止泄露给未授权的个人)、完整性(防止被改变或被破坏)、可用性(防止对访问资源的手段的干扰)。其中有两个重要的安全问题:拒绝服务攻击和移动代码的安全性仍然没有得到圆满解决。

可伸缩性

顾名思义就是随着资源数量的增加和用户访问的增加,系统仍然能保持其有效性,该系统就被称为可伸缩的。其中有控制物理资源的开销、控制性能损失、防止软件资源用尽和避免性能瓶颈四大挑战。

故障处理

在一个分布式系统中,硬件或软件都会出现未知的故障或者不正常运行,因此故障处理是贯穿整个系统的难题。容错(设计容错机制如重传)、故障恢复(数据恢复或“回滚”保证一致性)、冗余(多条路由或者备份等技术)都是故障处理技术。

并发性

多个用户对同一资源的使用,要保持操作的正确性就必须在数据保持一致的基础上同步。如使用操作系统的信号量。

透明性

  • 访问透明性:用相同的操作访问本地资源和远程资源(电子邮件)
  • 位置透明性:不需要知道资源的物理位置或网络位置(电子邮件、URL)
  • 并发透明性:几个进程能并发的使用共享资源而不互相干扰
  • 复制透明性:使用资源的多个实例提升可靠性和性能,而用户和程序员无需知道副本的相关信息
  • 故障透明性:屏蔽错误
  • 移动透明性:资源和客户能够在系统内移动而不受影响(移动电话)
  • 性能透明性:负载变化时,系统能够被重新配置以提高性能
  • 伸缩透明性:系统和应用能够进行扩展而不改变系统结构和应用算法
  • 服务质量。影响客户和用户体验的服务质量是可靠性、安全性和性能。

这些概念虽然很抽象,且看似简单,但如果能够正确而深入的理解,将受益很多。

public class MyThread extends Thread {
public void run(){
while (true){
if(this.isInterrupted()){
System.out.println("线程被停止了!");
return;
}
System.out.println("Time: " + System.currentTimeMillis());
}
}
}

public class Run {
public static void main(String args[]) throws InterruptedException {
Thread thread = new MyThread();
thread.start();
Thread.sleep(2000);
thread.interrupt();
}
}