`
gaojingsong
  • 浏览: 1235669 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【RPC框架之Zeroc ICE 介绍】

阅读更多

一、Zeroc ICE 介绍

Zeroc ICE ( Internet Communications Engine )中间件号称标准统一,开源,跨平台,跨语言,分布式,安全,服务透明,负载均衡,面向对象,性能优越,防火墙穿透,通讯屏蔽。因此相比Corba,DCOM,SOAP,J2EE等的中间件技术,自然是集众多优点于一身,而却没有他们的缺点。

 

Ice is a comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python, and more.



 

ZeroC ICE 是指ZeroC公司的ICE(Internet Communications Engine)中间件平台。

 

目前ICE平台中包括Ice,Ice-E,Ice Touch。

 

Ice为主流平台设计,包括Windows和Linux,支持广泛的语言,包括C++,Java,C#(和其他.Net的语言,例如Visual Basic),Python,Ruby,PHP和ActionScript。也包括所有的ICE服务,例如Ice Grid,IceStorm等。

 

Ice-E是Ice在资源受限的平台上的一个实现,支持C++和嵌入式操作系统,例如Windows CE,Linux。Ice-E本身不包含任何服务,但是可以利用在Ice上提供的各种服务。因此,通过Ice-E,移动设备也能无缝的集成到分布式系统中。

 

Ice Touch是为iphone和ipod touch开发的版本,包括Object-C映射,支持Iphone OS,并为MAC OS X开发图形界面应用程序提供完整的Cocoa框架的访问。

 

ICE可以保证在任何的网络环境或者操作系统下,成功的调用只有一次,它在运行时会尽力的定位到远程服务器,在连接失败的情况下会做尝试性重复性连接,确实连不上的情况会给用户以提示。

 

ICE采用的网络协议有TCP、UDP以及SSL三 种,不同于WebService,ICE在调用模式上有好几种选择方案,并且每种方案正对不同的网络协议的特性做了相应的选择。 

 

ICE特点 

Flexible

Make synchronous and asynchronous invocations using TCP, UDP, SSL/TLS, and WebSockets. Bidirectional connections allow a server to reuse a connection established by a client to make callbacks.

 

Secure

Ice offers powerful and easy to use security features. The IceSSL plug-in uses your operating system's SSL/TLS stack to encrypt your data and authenticate your connections.

 

Fast

Ice uses a compact, efficient binary protocol to minimize CPU and bandwidth consumption.

 

Everywhere

Develop in C++, C#, Java, JavaScript, Objective-C, PHP, Python, and Ruby. Deploy on Linux, macOS, Windows, Android, and iOS.

 

ICE通信原理:



 

二、微服务架构的优点

先天分布式

无状态(尽量)

积木式发展

 

三、单体应用

通俗地讲,“单体应用(monolith application)”就是将应用程序的所有功能都打包成一个独立的单元,即主要业务逻辑都运行在一个进程里的程序,可以是JAR、WAR、EAR或其它归档格式。单体应用有如下优点:

为人所熟知 :现有的大部分工具、应用服务器、框架和脚本都是这种应用程序;

IDE 友好 :像NetBeans、Eclipse、IntelliJ这些开发环境都是针对开发、部署、调试这样的单个应用而设计的;

便于共享 :单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享;

易于测试 :单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试过程,因为没有额外的依赖,每项测试都可以在部署完成后立刻开始;

容易部署 :只需将单个归档文件复制到单个目录下。

相当于把所有鸡蛋放在一个篮子里面。

 

单体应用的一些不足:

不够灵活 :对应用程序做任何细微的修改都需要将整个应用程序重新构建、重新部署。开发人员需要等到整个应用程序部署完成后才能看到变化。如果多个开发人员共同开发一个应用程序,那么还要等待其他开发人员完成了各自的开发。这降低了团队的灵活性和功能交付频率;

妨碍持续交付 :单体应用可能会比较大,构建和部署时间也相应地比较长,不利于频繁部署,阻碍持续交付。在移动应用开发中,这个问题会显得尤为严重;

受技术栈限制 :对于这类应用,技术是在开发之前经过慎重评估后选定的,每个团队成员都必须使用相同的开发语言、持久化存储及消息系统,而且要使用类似的工具,无法根据具体的场景做出其它选择;

技术债务 :“不坏不修(Not broken,don’t fix)”,这在软件开发中非常常见,单体应用尤其如此。系统设计或写好的代码难以修改,因为应用程序的其它部分可能会以意料之外的方式使用它。随着时间推移、人员更迭,这必然会增加应用程序的技术债务。

 

 

 

 

四、单体应用的七宗罪

1. Building the wrong thing  -->构建错误的东西

 

2. Failing to adopt a contract-first design approach

-->不实施契约优先(contract-first)

不实施契约优先(contract-first)设计方法是项目误入歧途的另一种途径。

一个好的服务契约允许开发者专注于微服务是在做什么,而不是专注于它是如何实现的,确定总体目标才是重中之重。

 

3. Assuming the wrong communication protocols

-->假设错误的通信协议

 

4. Introducing a shared domain model

-->引入共享域模型

 

5. Defining inappropriate service boundaries

-->定义不恰当的服务边界

 

6. Neglecting DevOps and Testing Concerns  

-->疏忽DevOps 和Testing  关系

DevOps 就是开发(Development) 和运维(Operations)这两个领域的合并

 

7. Disregarding the Human Factor

-->无视人为因素

  • 大小: 64.8 KB
  • 大小: 28.2 KB
0
1
分享到:
评论
1 楼 andot 2016-11-29  
传统的 ICE,Thrift,gRPC 这种基于中间语言的 RPC,仍然存在客户端和服务器紧耦合的问题,接口一旦升级,客户端和服务器就都需要升级,这个问题甚至比单体应用的问题更加严重。而 hprose 这种动态 RPC,让客户端和服务器端可以更好的解耦,服务器与客户端都可以单方面升级而保持最大的兼容性,更适合分布式开发。

相关推荐

    zero ICE快速入门java版

    zero ICE快速入门文档, ice是最优秀的rpc框架。 4、开发服务端代码如下 步骤一:编写Servant类即带有Disp的存根文件也就是说继承_HelloWorldDisp 这个类,这个类是个抽象类定义如下: public abstract class _...

    Ice zero分布式程序设计2分

    Ice Zero是Objectice Software公司推出的轻量级、高性能的RPC(远程过程调用)框架,它为开发者提供了一种简单、高效的方式来构建分布式系统。该框架的核心特点是它的零配置特性,使得在部署和维护过程中减少了大量...

    Ice通信框架原理与实践

    《Ice通信框架原理与实践》是一份深度探讨Ice框架的宝贵资源,对于初学者和有经验的开发者来说都是绝佳的学习材料。Ice,全称为“Internet Communication Engine”,是一种高性能、跨平台的分布式对象中间件,它提供...

    ice培训(服务、接口)ppt

    Zero Ice作为一种RPC框架,以其面向对象的语义、支持同步和异步调用、语言和实现无关性、线程支持以及安全特性而受到青睐。 【Zero Ice】 Zero Ice是一个面向对象的中间件平台,支持跨语言、跨平台的客户-服务器...

    protobuf-rpc:protobuf-rpc 是一个基于 Google ProtocolBuffer 的 RPC 框架。 目前 protobuf-rpc 支持 Cocoa Objective-C 和 Java 的服务和消息定义和代码生成

    对于纯的基于Windows或者Linux的服务器来说,RPC的解决方案很多,WebService、Zero-ICE、Caucho Hessian等等,但是对于需要同时支持iOS、Android的移动App开发来说,可选的解决方案一下子变得很少。 适合移动App开发...

Global site tag (gtag.js) - Google Analytics