分布式开发出现背景

当有计算机出现一段时间之后就开始有人去想如何将不同的电脑进行网络连接,而网络连接之后对于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. MySQL数据库备份与还原

    备份数据库 1.使用mysqldump命令备份 备份一个数据库:mysqldump -u 用户名 -p密码 数据库名 [表名1,表名2...]>备份文件路径及名字.sql           如 ...

  2. 聊天室或文字直播间的效果(AS开发实战第二章学习笔记)

    聊天室或文字直播间的效果即是新的文字消息总是加入窗口末尾,同时窗口内部的文本整体向上滚动,窗口的大小.位置保持不变聊天室用到的属性与方法说明gravity 指定文本的对齐方式,取值left|botto ...

  3. Java Collections Framework知识结构目录

    The core collection interfaces are the foundation of the Java Collections Framework. The Java Collec ...

  4. restful知识点之二restframework视图

    restful协议理解:面向资源开发 restful协议 ---- 一切皆是资源,操作只是请求方式 ----book表增删改查 /books/ books /books/add/ addbook /b ...

  5. python 测试:生成exe文件

    任务: test.py print(input('请输入:')) 将test.py生成test.exe 解答: 安装: pip install pyinstaller 命令使用: (绝对地址)pyin ...

  6. Oracle GoldenGate 详解

    一.Oracle GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与目标数据库的数据 ...

  7. 程序单一实例实现 z

    不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程). 实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具. Mutex是互 ...

  8. [问题记录]libpomelo编译报错:ssize_t重定义

    1. 时间:2015/01/16 描述:添加libpomelo到cocos2dx项目,报错如下图所示: 解决: 修改代码,源代码: #if !defined(_SSIZE_T_) && ...

  9. cocos2d-x 的api

    最近,在学习cocos2d-x,发现没有一个很好的api手册.因为起初我们学习一些例子之类的内容,会很容易使用,也很容易明白,但是当我们需要用新的api的时候,第一就会疑问有没有这个api,比如:你使 ...

  10. selenium 截图加上时间戳

    思路: 1  新建screenshot文件夹,不存在则创建该目录 2  在screenshot文件夹下新建当日日期文件夹,比如20190110:不存在则创建该目录 3  截图保存到当日文件夹,且截图文 ...