发表于: 2017-03-29 21:52:28

4 1518


.今天完成的

    今天一行代码都没有写,先了解任务八是干什么的,以及为什么要这么干,最后是拆解任务

二.明天计划

1.将项目分为三部分,service,core和controller;

三.今天的收获:主要是对任务八有了比较清晰的思路,明白他是什么,为什么了,至于怎么实现的细节还有待研究

   1.任务解读:任务八:使用springRMI完成WEB端和Service端的分离.

   这是任务八的核心概括,短短的一句话包含的东西太多太多,我们不怕,把每个字眼掰开了去搜索,像破案一样顺藤摸瓜,一定能理解任务的意思

  

   首先是关键字:"springRMI",springRMI是什么不太好搜索,退而求其次,那就先搜索RMI,综合搜索到的资料大概了解了RMI

   RMIRemote Method Invocation,远程方法调用)

   Java远程方法调用(RMI)提供了Java程序语言的远程通讯功能,这种特性使客户机上运行的程序可以调用远程服务器上的对象,使Java编程人员能够在网络    环境中分布操作。

   其实搜索到RMI的各种资料之后还是不太理解为什么需要远程方法调用,但是发现在官网任务RMI的解释中存在一个关键字"分布式系统"

   Web端和Service端的分离是现在分布式系统中最常用的方式,一般而言,会使用RMIJsonRPCThriftProtocolBufer等各种通讯协议,对纯Java来说,RMI是最简单的。

   于是乎继续顺藤摸瓜,这次搜索的是分布式系统,还是比较容易明白,而且比较有意思的

   归纳如下:            

             1.什么是分布式系统?什么是集中式系统?

             分布式系统中分布式的是相对原来的集中式系统来说的,集中式系统一句话概括就是:一个主机带多个终端(计算机网络中最外围的设备,主要用于用户信息的输入与处理结果输出,比如手机,个人计算机,iPad都算是终端);终端没有数据处理能力,仅仅负责数据录入与输出,所以运算,储存等全部在主机上进行;

             集中式系统的最大特点是部署结构比较简单,无需考虑如何对服务进行多节点部署,也不用考虑各节点之间的分布式协作问题,但是由于采用单机部署,可能带来系统复杂,难以维护,发生单点故障影响大,拓展性差等问题;

             分布式系统简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统用户来说感觉还是像一台计算机在提供服务一样.

             分布式系统能够采用更多普通计算机(相对于昂贵的大型机)组成集群提供服务,成本降低的同时处理能力提升

             分布式系统的特点1.分布性:硬件位置随意分布2.透明性:系统资源被所有计算机共享,用户可以使用本机以及其他计算机上的资源3.同一性:一个程序可以分布在几台计算机上并行地运行.4.通信性:系统中任意两台计算机都可以通过通信来交换信息

             2.分布式系统优缺点:

             优点:和集中式系统相比,分布式系统性价比更高,处理能力更强,可靠性更高,也有很好的扩展性.

             缺点:分布式依赖网络,网络状况可能对性能甚至服务能力造成一定影响主机的数量越多,宕机的概率也就越大,另外,由于服务在集群中分布是分布式部署,用户的请求只会落到其中一台机器上,所以一旦处理不好就很容易产生数据一致性的问题.

      至此,通过对分布式系统的理解,我们明白了RMI是为了实现分布式系统的一种方法,那么RMI前面加个spring又会擦出什么火花呢?

      springRMI是通过看代码发现的,因为记得之前看RMI实例知道,实现RMI需要继承remote接口,springRMIspringRMI的封装,使用springRMI可以不需要继承remote接口;

      至此,我们已经弄懂了第一个关键词”springRMI”,简单概括就是,springRMI是实现分布式系统的方法.

接下来继续看那句话

   使用springRMI完成WEB端和Service的分离

   看到这句话的时候我是懵逼的,且不说为什么这两端要分离, WEB端和Service端分别是指什么都不太清楚,

   好在这个时候脑袋中浮现出一张图:

   这是之前老大给我们任务讲解的时候画的图,感觉里面提到的分层似乎和上面那句话有关,赶紧回去又看了一遍果然获益匪浅

   WEB端和Service端分别是什么意思?

   我们原来的web项目中包含service,model层和controller, WEB端和Service端分离意思就是把一个项目的service层抽离出来成为一个项目也就是service,而之前web项目剩下的model层和controller层则分别拆解成core端和web

   为什么要分离?

   我觉得这是对分布式系统的呼应,既然硬件主机都分离开了,为啥项目不也分开玩玩呢?

   这么做的好处同样类似主机分布式的优点,也就是防止某一层故障的时候影响整个系统,

   如下:

·       3.部署两台Service,在WEB中随机访问任意一台Service

         ·       4.部署两台WEB,通过Nginx配置两台WEB随机访问,两台WEB可以随机访问两台Service

   官网任务的第三第四步骤其实就是在体现分层的好处,最容易出问题的service层我弄两个,其中一个出问题了我还有另一个可以用,论备胎的重要性;

   那接下来第4步部署两台WEB,然后把nginx也配置进去就是锦上添花了!每个WEB都包含两个service,而且还有nginx这个和事老在中间协调,想出问题都难!整个系统感觉妥妥哒!


四.今天遇到的问题

1.因为明天要帮人抢腾讯云服务器,然后正好这两天学了badboy录制脚本拿去jmeter用,所以脑袋中突发奇想:

能否利用badboy录制访问腾讯云抢购服务器过程的一段脚本,然后拿去jmeter循环N次,来达到抢购服务器的目的?






返回列表 返回列表
评论

    分享到