`
gaojingsong
  • 浏览: 1182845 次
  • 性别: 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,让客户端和服务器端可以更好的解耦,服务器与客户端都可以单方面升级而保持最大的兼容性,更适合分布式开发。

相关推荐

    Netty4.1实战-手写RPC框架.pdf

    RPC是一种远程调用的通信协议,例如dubbo、thrift等,我们在互联网高并发应用开发时候都会使用到类似的服务。本专题主要通过三个章节实现一个rpc通信的基础功能,来学习RPC服务...- 手写RPC框架第三章《RPC中间件》

    实现一个简单的RPC框架

    本篇将详细讲解如何使用socket、反射和序列化等技术来实现一个简单的RPC框架。 首先,让我们了解RPC的基本原理。在RPC模型中,客户端(Client)发起一个函数调用请求,这个请求包含了目标函数的名称和参数。RPC框架...

    zero ICE快速入门java版

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

    基于 C++ 的 RPC 框架.zip

    基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++ 的 RPC 框架.zip基于 C++...

    RPC框架的实现原理,及RPC架构组件详解.pdf

    详细讲解RPC

    自己写了一个RPC框架

    RPC(Remote Procedure Call)框架是分布式系统中的一种通信机制,允许一个程序调用另一个不在同一台计算机上的程序,使得远程服务调用就像本地调用一样简单。在这个场景中,你提到的是你自己编写了一个RPC框架,这...

    RPC框架原理介绍.docx

    RPC 框架原理介绍 RPC 框架是远程过程调用(Remote Procedure Call)的缩写,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用 RPC 可以解耦系统,方便维护,同时增加系统处理请求的...

    基于netty的手写rpc框架

    在本项目中,我们将基于Netty实现一个手写的RPC框架。Netty是Java领域的一个高性能、异步事件驱动的网络应用程序框架,常用于构建高效的服务器和客户端。 首先,我们需要理解RPC框架的基本组成部分: 1. **服务...

    RPC框架底层模拟

    RPC(Remote Procedure Call)框架是分布式系统中广泛使用的通信机制,它允许一个程序在不关心远程服务器具体实现的情况下调用其方法,就像调用本地对象一样。本篇将深入探讨RPC框架的底层模拟,主要围绕以下几个...

    JAVA实现简单RPC框架

    RPC(Remote Procedure Call)框架是分布式系统中广泛使用的通信机制,允许一个进程调用另一个进程中定义的方法,就像调用本地方法一样。在这个“JAVA实现简单RPC框架”的项目中,我们将探讨如何利用Java的核心特性...

    高性能RPC框架 nfs-rpc.7z

    在本场景中,我们关注的是一个名为“nfs-rpc”的高性能RPC框架。NFS(Network File System)最初是UNIX系统间用于文件共享的协议,而这里的“nfs-rpc”可能是指将NFS协议与RPC概念相结合的一种实现,旨在提供高效的...

    Hadoop自己的Rpc框架使用Demo

    在分布式计算领域,Hadoop RPC(Remote Procedure Call)框架是一个至关重要的组件,它允许不同的进程之间进行通信,尤其是在大规模数据处理的场景下。Hadoop RPC是Hadoop生态系统中的基础服务,使得不同模块如HDFS...

    基于java的开发源码-高性能RPC框架 nfs-rpc.zip

    基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-高性能RPC框架 nfs-rpc.zip 基于java的开发源码-...

    jsonrpc是一个基于Java的高性能开源RPC框架

    在Java世界中,JSON-RPC作为一个高性能的开源RPC框架,为分布式系统中的服务调用提供了便利。这个框架允许应用程序通过网络在不同的进程之间传递方法调用,仿佛这些方法是在本地对象上调用一样。 JSON-RPC的核心...

    可参考的自定义实现rpc框架

    标题中的“可参考的自定义实现rpc框架”指的是一个关于如何设计和实现远程过程调用(RPC)框架的教程或示例项目。RPC允许不同计算机系统间的程序进行通信,仿佛它们是在同一台机器上直接调用函数一样。下面将详细...

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip

    基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现的Rpc框架.zip基于C++ module库 Protobuf Zookeeper 实现...

    6种微服务RPC框架,你知道几个?

    跟语言平台绑定的开源RPC框架主要有下面几种。Dubbo:国内最早开源的RPC框架,由阿里巴巴公司开发并于2011年末对外开源,仅支持 Java语言。 Motan:微博内部使用的RPC框架,于2016年对外开源,仅支持Java语言。 Tars...

    JAVA实的RPC框架

    RPC(Remote Procedure Call)框架是Java开发中常用于构建分布式系统的重要工具,它允许一个程序在不关心远程系统具体实现的情况下调用其功能,简化了跨网络的服务调用。本篇文章将深入探讨基于Java实现的RPC框架,...

    自定义rpc框架

    自定义RPC(Remote Procedure Call)框架是软件开发中的一个重要领域,它允许程序在不同的网络节点间进行通信,仿佛调用本地方法一般。本项目旨在通过深入研究Netty和Zookeeper来构建一个类似Dubbo的RPC框架,从而...

Global site tag (gtag.js) - Google Analytics