【java框架系列】spring boot amqp
关于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。
【java框架系列】spring webmvc
关于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。
【java框架系列】spring-boot-data-redis
【java框架系列】spring boot核心类和扩展点
【java框架系列】spring boot核心类和扩展点(web)
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。
【java框架系列】spring boot 1.4.0体验
本文参考资料
https://docs.spring.io/spring/docs/4.3.0.RELEASE/spring-framework-reference/htmlsingle/ |
分布式应用系统概念
分布式系统已经无处不在
分布式系统渗透到包括金融与商业、信息社会、创意产业和娱乐、医疗保健、教育、交通与物流、科学、环境管理等行业中。
其中,三个典型的案例可以让我们了解到它的存在性和重要性:Web搜索、大型多人在线游戏、金融交易。
Web搜索
Web搜索引擎的任务是为万维网的所有内容建立索引,其中包含上千亿的页面、上万亿的Web地址。google,它代表了计算历史上最大和最复杂的分布式系统之一。最近的数字表明Google一个月的搜索量已经超过1000亿。其中代表性三大论文是整个业界学习的典范。
大型多人在线游戏
它提供一种身临其境的感觉,博主一直认为游戏是最高端软件,也是入行的第一个动力。想想超大数量的用户通过互联网在一个持久的虚拟世界中交互,是一件多么神奇的事情。
金融交易
金融行业一直以其需求处在分布式系统技术的前沿。特别是在实时需求的领域上。它通常再用分布式基于时间的系统。其中,感兴趣数据项被称为事件,而需求就是可靠和及时的传递事件给大量对此信息感兴趣的用户。
分布式系统的挑战
异构性
网络、计算机硬件、操作系统、编程语言、由不同的开发者完成的软件实现都是造成异构性的主因。其中网络的异构通过互联网协议相互通信而被屏蔽;中间件的流行屏蔽的底层网络、硬件、操作系统和编程语言的异构,它为分布式应用和服务器提供了一直的计算模型,包括RPC、远程事件通知、远程SQL访问和分布式事物调用;虚拟机也是使代码到处运行的一种方法。
开放性
它取决于新的资源共享服务能被增加和供多种客户程序使用的程度。特征就是发布系统的关键接口,使其基于一致的通信机制,让不同提供商提供异构硬件和软件。
安全性
包括三个部分:机密性(防止泄露给未授权的个人)、完整性(防止被改变或被破坏)、可用性(防止对访问资源的手段的干扰)。其中有两个重要的安全问题:拒绝服务攻击和移动代码的安全性仍然没有得到圆满解决。
可伸缩性
顾名思义就是随着资源数量的增加和用户访问的增加,系统仍然能保持其有效性,该系统就被称为可伸缩的。其中有控制物理资源的开销、控制性能损失、防止软件资源用尽和避免性能瓶颈四大挑战。
故障处理
在一个分布式系统中,硬件或软件都会出现未知的故障或者不正常运行,因此故障处理是贯穿整个系统的难题。容错(设计容错机制如重传)、故障恢复(数据恢复或“回滚”保证一致性)、冗余(多条路由或者备份等技术)都是故障处理技术。
并发性
多个用户对同一资源的使用,要保持操作的正确性就必须在数据保持一致的基础上同步。如使用操作系统的信号量。
透明性
- 访问透明性:用相同的操作访问本地资源和远程资源(电子邮件)
- 位置透明性:不需要知道资源的物理位置或网络位置(电子邮件、URL)
- 并发透明性:几个进程能并发的使用共享资源而不互相干扰
- 复制透明性:使用资源的多个实例提升可靠性和性能,而用户和程序员无需知道副本的相关信息
- 故障透明性:屏蔽错误
- 移动透明性:资源和客户能够在系统内移动而不受影响(移动电话)
- 性能透明性:负载变化时,系统能够被重新配置以提高性能
- 伸缩透明性:系统和应用能够进行扩展而不改变系统结构和应用算法
- 服务质量。影响客户和用户体验的服务质量是可靠性、安全性和性能。
这些概念虽然很抽象,且看似简单,但如果能够正确而深入的理解,将受益很多。
【java标准库系列】如何停止一个正在运行的线程
public class MyThread extends Thread { |