分布式开发出现背景

当有计算机出现一段时间之后就开始有人去想如何将不同的电脑进行网络连接,而网络连接之后对于web的项目开发就探索所谓的分布式设计,同时人们也意识到重要的数据必须多份存在。所以分布式就逐步发展起来了。

经过多年的发展,人们认识到的问题自然而然是:单一主机所能处理的信息量是有限的,所以为了得到更高性能的设计方案,一定采用多台电脑,那么随之而来的问题是多台主机之间如何进行分配合作呢?

于是对于分布式的设计开发,最开始就有如下思考:

  • 分布式的开发如何让代码更加安全?
  • 分布式开发中如何进行准确有效的交互?
  • 分布式中如何进行程序功能的划分?

对于有很多开发经验的人实际都明白现在项目开发进行的分布式面对的问题:

  • WEB应用集群:考虑到多用户考虑到多用户并发访问的处理能力;
  • 业务中心:在庞大的项目设计中,应该有完善的业务处理能力,这样所有的客户端(服务器)直接调用这些业务中的操作就可以完成具体的功能;
  • 数据库集群:解决了数据库的存储问题,以及数据的分片管理;

分布式技术历史迭代

对于分布式的开发历史发展,经历了一下一些技术:

  1. CORBA:公共对象请求代理架构,它是一种开发的标准,有多种语言支持的开发标准。
  2. RMI(远程方法调用):该技术是有SUN推出,该技术出现的主要目标可以与CORBA的市场竞争。但是很多用户不认可该技术

但是RMI带来了一项革命性的举措:在Java里面提出了远程接口的概念。不过RMI实现还是有些不尽人意(详细可以查阅RMI弊端)

提出的存根和骨架是两个比较糟心的东西,使得开发变得不方便,后来被消除了。

后来SUN的设计师发现,RMI虽然好用,但是不如CORBA广泛,于是就开始思考是否能基于CORBA做一些更好用的设计呢?于是就产生一个新的协议:RMI——IIOP的协议,这个技术用在了EJB技术上。

3.EJB技术:EJB带来了优秀的理论,但是实现起来还是比较糟糕(具体查阅EJB缺陷),而它的理论被其它开源框架借鉴改进,无疑推动Java技术的发展。EJB方案如下:

同时,问题的存在必定使人们不断寻求解决方案,之后出现了足以改变现状的优秀语言:XML。很多公司用户就把XML当作数据交换的基础,在这种情况下, WebService(WEB服务)登上历史舞台。

相比以前的技术方案,WebService是很大的进步,但是也是存在不小的缺陷:

  • 速度是比较慢的,处理速度不行;
  • 如果使用远程接口的方式调用,需要利用工具生成一对工具类代码;

随着WebService的发展,2005左右有形成了一大核心技术:SOA(面向服务架构),它提出了服务总线(ESB)的概念

SOA技术对新老系统的整合有着重要的意义,它解决的是系统历史包袱,当然这也是它的局限性,毕竟这些问题也不是人们刻意让它存在的。就这样SOA技术继续不温不火的持续着。

但是SOA提出的服务总线又成为新一代分布式的讨论需求,人们发现把所有的服务统一管理起来,就成为了服务总线,如此所有的开发者直接调用里面的服务就完成需要的功能,是多么轻松省事。后来有不断出现了许多的RPC开发技术,如dubbo技术等。不过这个时候发展最快的是Rest。因为JSON的广泛应用,就像当初XML技术造就WebService一样,JSON造就了Rest服务,大家都希望我们的操作应该跟简单一些,同时Rest还是一个未成型的标准它还在发展着。

而随着Rest技术的广泛关注和认可,Spring得到了新的机会:利用Rest进行RPC技术的实现,处理速度快,占用资源少。在Spring Cloud中真正的将整个的Rest作为RPC实现技术,并且这一技术已经开始出现有行业的统一之势;而且SpringCloud也借力与SpringBoot开发技术,可以实现项目快速打包发布运行。这点非常符合当前云时代的开发要求。至此我们对RPC实现又迈入一个更加崭新的时代。

作者: xiaogao

出处: http://www.cnblogs.com/tocode/>

关于作者:专注Java Web,网络爬虫,请多多赐教!

本文版权归作者和博客园共有,欢迎转载,但务必注明出处,且在文章页面明显位置给出, 原文链接 如有问题请咨询。

Spring Cloud 微服务入门(一)--初识分布式及其发展历程的更多相关文章

  1. 《Spring Cloud微服务 入门 实战与进阶》

    很少在周末发文,还是由于昨晚刚收到实体书,还是耐不住性子马上发文了. 一年前,耗时半年多的时间,写出了我的第一本书<Spring Cloud微服务-全栈技术与案例解析>. 时至今日,一年的 ...

  2. Spring Cloud 微服务入门(二)--Spring Cloud 架构

    Spring Cloud整体核心架构:Rest服务,在Spring Cloud配置过程中,都是遵循Rest风格规范,在Rest处理中,必不可少两个对象端:服务的提供者(provider)和服务消费者( ...

  3. Spring Cloud微服务系列文,服务调用框架Feign

    之前博文的案例中,我们是通过RestTemplate来调用服务,而Feign框架则在此基础上做了一层封装,比如,可以通过注解等方式来绑定参数,或者以声明的方式来指定请求返回类型是JSON.    这种 ...

  4. 如何优化Spring Cloud微服务注册中心架构?

    作者: 石杉的架构笔记 1.再回顾:什么是服务注册中心? 先回顾一下什么叫做服务注册中心? 顾名思义,假设你有一个分布式系统,里面包含了多个服务,部署在不同的机器上,然后这些不同机器上的服务之间要互相 ...

  5. Dubbo和Spring Cloud微服务架构比较

    Dubbo 出生于阿里系,是阿里巴巴服务化治理的核心框架,并被广泛应用于中国各互联网公司:只需要通过 Spring 配置的方式即可完成服务化,对于应用无入侵,设计的目的还是服务于自身的业务为主. 微服 ...

  6. Dubbo 和 Spring Cloud微服务架构 比较及相关差异

    你真的了解微服务架构吗?听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构. 微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务, ...

  7. 全链路实践Spring Cloud 微服务架构

    Spring Cloud 微服务架构全链路实践Spring Cloud 微服务架构全链路实践 阅读目录: 网关请求流程 Eureka 服务治理 Config 配置中心 Hystrix 监控 服务调用链 ...

  8. 【spring colud】spring cloud微服务项目搭建【spring boot2.0】

    spring cloud微服务项目搭建 =================================== 示例版本: 1.spring boot 2.0版本 2.开发工具 IntellJ IDE ...

  9. Spring Cloud 微服务架构解决方案

    1 理解微服务 1.1 软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1.1.1 单体架构 特点: 1.所有的功能集成在一个项目工程中. 2.所有的功能打一个 ...

随机推荐

  1. 异步nodejs代码的同步样子写法样例

    异步nodejs代码的同步样子写法样例 js的异步嵌套太深代码将不好看.尤其在用node的时候这种情况会大量出现. 这里用node连接redis,做一个用户注册的简单例子来说明.例如用redis做存储 ...

  2. JDBC事务和数据库事务嵌套的讨论 .

    首先必须执行con.setAutoCommit(false)方法,将JDBC事务设置为手动提交,否则手动提交con.commit()无效,手动回滚con.rollback()引发SQLExceptio ...

  3. IONIC调用原生的等待对话框

    ngCordova提供了progressIndicator插件,用以方便的显示等待对话框,但是目前版本仅支持安卓版本.为了让苹果版本也显示,可以到以下地址下载通用的插件,JS部分的代码无需改变: ht ...

  4. memcached安装及.NET中的Memcached.ClientLibrary使用

    一.安装服务端: 服务端:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip 64:http://blog.couchbase.c ...

  5. https填坑之旅

    Boss说,我们买了个权威证书,不如做全站式的https吧,让用户打开主页就能看到受信任的绿标.于是我们就开始了填坑之旅. [只上主域好不好?] 不好...console会报出一大堆warning因为 ...

  6. Oracle 死锁处理

    一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错.二.死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更 ...

  7. soapui使用。简单测试+测试套+负载测试。

    http://www.cnblogs.com/zerotest/tag/soapui/

  8. LINQPad 编译调试C#代码的工具推荐

    LinqPad介绍 学习C#代码的好帮手,很容易调试C#代码片段. LINQPad 4 支持.NET Framework 4.0 / 4.5 ,专业调试LINQ,lambda等特性,完全取代Snipp ...

  9. [原]Linux 修改时区

    1.查看当前时区 date -R 2.修改当前时区 tzselect 之后会出来一个选项菜单,选择你想要的时区就OK了 3.替换系统时区文件 cp /usr/share/zoneinfo/XXX/YY ...

  10. 安装Kali Linux 后需要做的 20 件事 - 51CTO.COM

    我在本文中整理出了安装一份全新的Kali Linux后总是要做的若干件事情.由于我有多台笔记本电脑和工作站,所以尽量扩大下列操作步骤的适用范围,以满足每个人的需求.这是我在安装Kali Linux后做 ...