IT修真院_JAVA

分布式

2017-12-21  本文已影响1人  七里花海

谈谈分布式


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#/

上一篇下一篇

猜你喜欢

热点阅读