分布式
谈谈分布式
PPT视频
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
1.背景介绍
什么是分布式?
分布式是一个形容词,如分布式计算,分布式系统等,其实就是一种设计思想。
那程序员的分布式设计思想如何体现呢?
比如说做一个物品交易的网站,建一个web工程,往里面加功能,比如订单功能,商品管理功能,
客户信息管理功能等等。
找一个性能优良的服务器,把web项目和数据库等资源都丢到服务器里,测试,差不多就能上线了。
过段日子,运气不错的有了一些客户,心里美滋滋,结果发现随着客户的访问的数量增长,网站开始扛不住了,服务器也接近崩溃,怎么办呢?
这还不简单,再买几个服务器,把项目都放到这些服务器里,用nginx反向代理不就可以增加访问量了。
万万没想到,生意太好,服务器又撑不住了,加配置也只能解燃眉之急,又要怎么办呢?
模块之间耦合度太高,升级其中一个功能其他的功能也要做修改,升级,系统的拓展性也很差。
用分布式的思想对项目进行重构,把整个项目工程拆分成多个子项目,每个子项目负责自己的功能,例如订单这个功能就是一个单独的系统项目,会员也是一个单独的系统。
这样做的好处是:把每个模块都拆分出来,可以灵活的部署了,比如商品信息这个模块被访问的量比较大,就可以单独对这个模块进行服务性能的提升,不用全部都一起提升。也降低了代码的耦合度,模块之间互不影响,如果以后有人加入开发,他只要负责他的模块去开发就可以了,合作也高效。
2.知识剖析
什么架构可以体现分布式的思想?
虽然Internet提供了开放的环境,但是没有一种统一的服务访问模式,各个企业之间成了信息内部丰富的孤岛,需要将这些孤岛串联起来,同时要最大限度的复用有限的资源,因此提出了面向业务的服务概念。SOA架构(Service-Oriented Architecture,面向服务的体系结构,也叫面向服务架构)是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。
让SOA落地——SCA
SCA (Service Component Architecture) 是一个开发SOA(Service-Oriented Architecture)面向服务应用的简单模型规范,它描述用于使用SOA构建应用程序和系统的模型。它可简化使用SOA进行的应用程序开发和实现工作。SCA仅仅是个规范
,各个涉及SOA技术的公司的实现也各不相同。
3.常见问题
SCA具体长啥样?
4.解决方案
Tuscany是开源界 SCA 的试金石,也是当前开源界最成熟的 SCA 框架之一,下面介绍一下它的构成。
(1)Component
Component是SCA原子(最基层的组织单元),其封装了实际的业务逻辑。Component可以采用运行环境支持的任何编程技术实现。例如,Apache Tuscany项目目前支持Java、JavaScript和C++等组件类型,同时为创建新的组件类型提供了扩展API。
(2)Property
Property控制Component的行为,在部署其间可以被可改变。同时Composite也可以有Property,但其Property是Component Property升级(Promote)后的Property。
(3)Service
Service是供其它Component调用时使用。
(4)Reference
Component也描述了被该Component调用的其它组件的接口,称为SCA的“引用”(Reference)。这些Service和Reference被连接在一起,组成一个可运行的系统。
(5)Composite
如果说Component是SCA架构中的原子,那么Composite就是SCA架构中的分子;图中的两个Component,A和B,被组装在一个更大Composite范围内,被称作Composite A。SCA的Composite描述了一个由互相连接的Component所构成的集合。正如你所看到,Composite也声明了Service和Reference,它们被暴露到Composite外部。Composite的service和Reference是Composite内部的Component的Service和Reference的升级。一个Composite内部的Component彼此连接就如同创建一个运行在同一进程中的紧耦合的应用程序。将Composite通过Service和Reference连接在一起,则形成了一个更加松耦合的系统;系统中的每一个Composite都可能运行在一个单独的进程或处理器中,在网络中通过各种的协议和传输绑定连接起来。通过这个途径SCA为独立和分布式应用提供了统一的编程模型。
5.编码实战
6.扩展思考
分布式和集群的区别?
集群是物理形态,分布式是一种工作方式。
集群一般是物理集中、统一管理的,而分布式系统则不强调这一点,只要是一堆机器,就可以叫集群,
他们是否一起协作干活,不确定;一个程序或系统,只要运行在不同的机器上,就可以叫分布式。
所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;
分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台机器上。
7.参考文献
http://blog.csdn.net/elimago/article/details/1946208
http://blog.csdn.net/cenwenchu79/article/details/1879690
8.更多讨论
微服务和分布式有什么区别和联系?
微服务往往有比较清晰的便捷,每一个微服务往往需要由独立的功能,只是功能比较单一;多个微服务可以进行组合,组合后可以构成一个相对复杂的业务系统,以满足业务需求;相比而言,分布式服务架构往往是一种传统的单体应用架构,分布式服务内部耦合性较高。
代码质量对部署分布式有影响吗?
影响很大
web和service 很难拆开
PPT地址:
https://ptteng.github.io/PPT/PPT-java/JAVA-task9-%E5%88%86%E5%B8%83%E5%BC%8F.html#/