分布式开发出现背景

当有计算机出现一段时间之后就开始有人去想如何将不同的电脑进行网络连接,而网络连接之后对于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. 二维数组中的查找(C++和Python实现)

    (说明:本博客中的题目.题目详细说明及参考代码均摘自 “何海涛<剑指Offer:名企面试官精讲典型编程题>2012年”) 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列 ...

  2. android之键盘转载

    显示键盘: EditText editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.request ...

  3. Windows IO 性能简单测试

    转自:http://bbs.csdn.net/topics/360111289, 有改动. #include <windows.h> #include <stdio.h> #i ...

  4. javascript面向对象的写法02

    面向对象特性的初步实现 1.封装 利用作用域封装变量 作用域的概念是一样的,for语句,if语句等这些作用域内定义的变量只能作用域内访问,函数内定义的变量只能函数内访问. function Class ...

  5. 并发包同步工具CyclicBarrier

    /** * * @描述: 同步工具 * 表示大家彼此等待,大家集合好后才开始出发,分散活动后又在指点地点集合碰合 . * @作者: Wnj . * @创建时间: 2017年5月16日 . * @版本: ...

  6. SQL Server ->> WITH RESULT SETS子句

    SQL Server 2012对EXECUTE子句引入了WITH RESULT SETS选项,用于对EXECUTE语句执行的存储过程或者动态语句结果进行一个指定数据类型的转换,这样可以避免一种情况就是 ...

  7. SQL点点滴滴_查询类型和索引-转载

    当您考虑是否要对列创建索引时, 请估计在查询中使用列的方式, 下表介绍了索引对其有用的查询类型. 表中的示例基于 AdventureWorks2008R2 示例数据库, 在 SQL Server Ma ...

  8. c#编程指南(六) 类索引器(Class Indexer)

    类索引器,可以使得你使用数组一样的方式来访问类的数据. 这种访问多见于数组,列表,词典,哈希表的快捷访问. 实际上写法很简单,写成:public T1 this[T2 i] 代码如下: using S ...

  9. Java集合工具类

    import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map ...

  10. C/C++ 合法整数与字符

    一.C语言中的合法整型 首先C语言中的整型有三种表示方式:十进制.八进制和十六进制.(C语言中没有表示二进制的整型) 十进制: 如 int a = 63; //一个正常的整型 八进制: 如果想用8进制 ...