一、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
-->无视人为因素
相关推荐
RPC是一种远程调用的通信协议,例如dubbo、thrift等,我们在互联网高并发应用开发时候都会使用到类似的服务。本专题主要通过三个章节实现一个rpc通信的基础功能,来学习RPC服务...- 手写RPC框架第三章《RPC中间件》
本篇将详细讲解如何使用socket、反射和序列化等技术来实现一个简单的RPC框架。 首先,让我们了解RPC的基本原理。在RPC模型中,客户端(Client)发起一个函数调用请求,这个请求包含了目标函数的名称和参数。RPC框架...
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
RPC(Remote Procedure Call)框架是分布式系统中的一种通信机制,允许一个程序调用另一个不在同一台计算机上的程序,使得远程服务调用就像本地调用一样简单。在这个场景中,你提到的是你自己编写了一个RPC框架,这...
RPC 框架原理介绍 RPC 框架是远程过程调用(Remote Procedure Call)的缩写,通过网络通信调用不同的服务,共同支撑一个软件系统,微服务实现的基石技术。使用 RPC 可以解耦系统,方便维护,同时增加系统处理请求的...
在本项目中,我们将基于Netty实现一个手写的RPC框架。Netty是Java领域的一个高性能、异步事件驱动的网络应用程序框架,常用于构建高效的服务器和客户端。 首先,我们需要理解RPC框架的基本组成部分: 1. **服务...
RPC(Remote Procedure Call)框架是分布式系统中广泛使用的通信机制,它允许一个程序在不关心远程服务器具体实现的情况下调用其方法,就像调用本地对象一样。本篇将深入探讨RPC框架的底层模拟,主要围绕以下几个...
RPC(Remote Procedure Call)框架是分布式系统中广泛使用的通信机制,允许一个进程调用另一个进程中定义的方法,就像调用本地方法一样。在这个“JAVA实现简单RPC框架”的项目中,我们将探讨如何利用Java的核心特性...
在本场景中,我们关注的是一个名为“nfs-rpc”的高性能RPC框架。NFS(Network File System)最初是UNIX系统间用于文件共享的协议,而这里的“nfs-rpc”可能是指将NFS协议与RPC概念相结合的一种实现,旨在提供高效的...
在分布式计算领域,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的开发源码-...
在Java世界中,JSON-RPC作为一个高性能的开源RPC框架,为分布式系统中的服务调用提供了便利。这个框架允许应用程序通过网络在不同的进程之间传递方法调用,仿佛这些方法是在本地对象上调用一样。 JSON-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框架主要有下面几种。Dubbo:国内最早开源的RPC框架,由阿里巴巴公司开发并于2011年末对外开源,仅支持 Java语言。 Motan:微博内部使用的RPC框架,于2016年对外开源,仅支持Java语言。 Tars...
RPC(Remote Procedure Call)框架是Java开发中常用于构建分布式系统的重要工具,它允许一个程序在不关心远程系统具体实现的情况下调用其功能,简化了跨网络的服务调用。本篇文章将深入探讨基于Java实现的RPC框架,...
自定义RPC(Remote Procedure Call)框架是软件开发中的一个重要领域,它允许程序在不同的网络节点间进行通信,仿佛调用本地方法一般。本项目旨在通过深入研究Netty和Zookeeper来构建一个类似Dubbo的RPC框架,从而...