分布式系统开发注意点_分布式系统开发注意事项

分布式系统开发注意点

开发分布式软件系统时,要考虑许多因素。 如果您甚至不知道第一句话中我在说什么,那么让我为您提供一些见解,示例以及有关分布式系统的实例。

总览

分布式系统是指多个物理硬件设备与单独的离散用户交互并通过这些硬件设备协作以为这些离散的单独用户实现不同且相似的目标。 有时,这些设备使用服务器作为集线器以点对点模式工作,以了解彼此之间的连通性,而其他设备则通过单个或一组集中式服务器进行协作和协调,例如

类似于Extranet的系统,供方用户通过Web浏览器审阅文档,然后在其浏览器中单击工作流,最终将文档传真给另一组用户,这些用户应提供带有足够标签(即带有条形码)的服务。 这个循环使封闭的系统可以设计和开发分布式软件。 传真的接收者填写并做任何需要作为其纸本世界的一部分的事情(包括随着时间的流逝接收许多传真并将其全部发送回去,这是另一篇有关电子签名的博客文章的案例) 。 接收到的传真服务器在接收到入站原始文档后,会将接收到的传真图像“移交给”另一组用户(甚至是发起出站传真的同一用户)进行整理和处理,以在接收下对其进行检查和处理在他们的浏览器中再次进行工作流程。

在这里,您有许多系统在数据中心内协同工作以实现不同的目标。 您有一些用于用户界面的Web服务器。 用于工作流系统,分析和报告的某些数据持久性层。 您有用于管理传入/传出传真传输的传真服务器(我自己喜欢Dialogic Brooktrout传真板,我自己http://www.dialogic.com/Products/fax-boards-and-software/fax-boards.aspx )。 您具有入站和出站标签,标记,排序规则,扫描和对象字符识别组件(通常,根据设计,一些不同的服务器可能并不仅是一个单独的实例,而且取决于规模可能只有六个左右)。

所有这些组件下面的结构在所有这些组件之间都是一致的。 这始于OSI层,因为首先和大多数分布式系统是通过约束的物理层连接的,所以让我们从这里开始。

物理层约束

OSI层有7层或9层,具体取决于您与谁交谈。 在某些团队中,第8层和第9层分别是政治和宗教,因为必须考虑到围绕设计,开发,部署和维护这些系统的所有交互的社会结构,方法论和人类行为。 如果您不满意,那么您的应用程序层用户体验也可能会出错。 第1-7层(较常见的层,通常是更好理解的层)对计算机如何通过用户或计算机的接口以及通过另一计算机或另一用户的接口到另一台计算机的数据移动方式进行分类。 如果没有重构或在这些层中创建新软件,您将永远无法在基础层之外做任何事情。 因此,很高兴知道它们是如何工作的。 您可以在自己的软件程序编写工作中做到这一点(请,请相当高兴),以更好地平衡处理约束。

http://fab.cba.mit.edu/classes/MIT/961.04/people/neil/ip.pdf的图30-1映射了Internet协议套件的许多协议及其对应的OSI层。

软件在硬件设备中继续运行的位置

最重要的是本地机器硬件的操作系统及其实现。 我很难选择真正构成底层架构的许多或其他任何层或系统,具体取决于您的托管服务提供商,而该提供商最终还是一个供应商,所以这又是另一回事了……除非他们运行通过open编写的软件您已经完成了源项目工作,但我离题了…… Linux编程接口:Linux和UNIX系统编程手册是我喜欢Linux的资源。

怎么办?

在过去的九年中,由于廉价(有时便宜)的商品硬件已成为我们所预见的现实,因此许多经典计算机概念已变得更容易实现。 这使得并行和分布式计算平台,分布式文档和键/值存储库,分布式发布/订阅经纪人,发布者和消费者系统,甚至具有不可变结构的参与者模式也开始成为该结构的一部分。 这里的难题是这些市场领域的竞争和起步阶段,甚至还没有“ 跨越鸿沟 ”。

现在,说完所有这些……就显得很突出。 “ ZooKeeper提供了正确性和协调性的关键点,这些要点必须比所有希望将其本质上构建为自己的关键逻辑的系统都具有更高的交易保证。” 卡米尔·富尼耶(Camille Fournier)在我的一篇博客文章中让我看到了这一点, 网址为http://whilefalse.blogspot.com/2013/05/zookeeper-and-distributed-operating.html?spref=tw ,这是因为Zookeeper是如何与许多此类动物联系在一起的现有类型的系统。 由于这些系统尚未在市场上成熟(到目前为止,它已经在早期采用者中充分成熟了),因此它们之间和内部存在一些一致性,因此我们必须开始(从字面上)研究,支持和承诺。

现在,关于Zookeeper的另一个好处是,已经开发了一个开放源代码库,并且(在所有条件相同的情况下)不断维护该开放源代码库,使开发Zookeeper开发的可重复模式更加容易http://curator.incubator.apache.org/ 。 如果您从未使用过Zookeeper,建议您从http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html开始。

参考:来自JCG合作伙伴 Joe Stein的分布式系统开发注意事项 ,位于All Things Hadoop博客上。

翻译自: https://www.javacodegeeks.com/2013/06/distributed-system-development-considerations.html

分布式系统开发注意点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

String#repeat来到Java吗?

JDK-8197594 (“ String#repeat”)在其“描述”中包括以下内容:“长期以来,一直要求一种用于重复字符序列的String方法,没有后续操作。” 可以在JDK-8197594的“问题链接”中找到有关String类中用于重复字符…

mysql 什么是幻读_何为幻读?MySQL又是如何解决幻读的?

一、什么是幻读在一次事务里面,多次查询之后,查询的结果集的个数不一致的情况叫做幻读。而多出来或者少的哪一行被叫做 幻行二、为什么要解决幻读在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。三、…

电子电气架构——车载ECU刷写工具vFlash简介

电子电气架构——车载ECU刷写工具vFlash简介 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值&a…

mysql执行系统命令_mysql 命令行执行 sql

1.直接输入sql执行MySQL> select now();---------------------| now() |---------------------| 2013-09-18 13:55:45 |---------------------1 row in set (0.00 sec)2.执行编写好的sql脚本mysql> source /home/1.sql---------------------| now() |-------------------…

jboss7.1.1 部署_在JBoss AS 7上部署BroadleafCommerce 2.0

jboss7.1.1 部署前2个步骤实际上与Broadleaf无关&#xff0c;但是提到该步骤是为了使其易于执行&#xff08;复制/粘贴&#xff09;这些步骤。 步骤&#xff03;1&#xff1a;在JBoss AS中配置数据源。 <datasource jta"true" jndi-name"java:jboss/datasou…

java中n次方怎么表示_java如何计算一个数的n次方

java递归算法&#xff0c;代码如下&#xff1a;public class Test3 { public double zhishu(double x,double y){ if(y>0){ return x*zhishu(x,y-1); }else if(y<0){ return (x*zhishu(x,-y-1)); }else{ return 1; } } public double fuzhishu(…

枚举集合的EnumSet

在上一篇博客文章中&#xff0c;我们发现了EnumMap用于带有枚举键的映射。 您可能已经观察到&#xff0c;还有一个专门针对枚举优化的Set &#xff1a; EnumSet 。 我们再次定义一个CoffeeType枚举&#xff1a; public enum CoffeeType {ESPRESSO, POUR_OVER, FRENCH_PRESS, …

linux下mkdir头文件_Linux中判断一个目录是否存在,如果不存在就创建这个目录

在操作文件目录时我们常常会考虑如下的功能&#xff1a;1、判断文件是否存在&#xff0c;并判断文件是否可写/目录是否存在Linux下&#xff1a;#includeint access(const char* pathname, int mode);参数介绍&#xff1a;返回值&#xff1a;成功0&#xff0c;失败-1pathname 是…

mac 连接hbase的图形化界面_MAC安装Hbase以及Hbase基本命令

安装Hbase1&#xff0e;官网下载安装包&#xff0c;我下载的是hbase-2.4.0-bin.tar.gz。2&#xff0e;解压&#xff1a;tar zxf hbase-2.4.0-bin.tar.gz3&#xff0e;安装JDK&#xff0c;并设置JAVA_HOME&#xff0c;通过vi ~/.bash_profile&#xff0c;设置环境变量export JAV…

ldap java_使用LDAP保护Java EE6中的Web应用程序

ldap java在上一篇文章中&#xff0c;我们解释了如何在通过传输层安全性&#xff08;TLS&#xff09;/安全套接字层&#xff08;SSL&#xff09;传输数据时保护数据。 现在让我们尝试了解如何为使用LDAP服务器进行身份验证的基于JEE 6的Web应用程序应用安全机制。 目的&#x…

mysql 一致性hash_一致性hash算法在分表分库中的应用

一致性hash算法结构图 分表分库结构图 可进行循环冗余存储&#xff0c;顺时针存储到下一个物理节点(非虚拟节点)package com.haiziwang.platform.kmcsms.route.algorithm;import java.util.Collection;import java.util.SortedMap;import java.util.TreeMap;/*** 一致性Hash算法…

生产中的性能分析

生产中的性能分析 如果您在Java应用程序的性能方面遇到了一些严重问题&#xff0c;那么很可能您会知道线程分析的价值。 但是您知道应该使用哪个分析器吗&#xff1f; 探查器使用两种基本技术-采样和仪器。 采样分析器 采样探查器包括定期向JVM询问所有当前活动线程的当前执行…

mysql用com_MySQL 使用教程

关于 MySQLMySQL 是最流行的开源数据库。本文简明的讲解了 MySQL 如何下载安装到使用的整个过程。MySQL 支持多种特性&#xff1a;使用 C和 C编写&#xff0c;并使用了多种编译器进行测试&#xff0c;保证了源代码的可移植性。支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell…

c++ 一维数组长度_每天一点C / 一维数组和指针

哈喽&#xff0c;我是老吴&#xff0c;继续记录我的学习心得。每天一点系列是我对微习惯的践行。现在能做到每天一点 C&#xff0c;将来就会有更多的每天一点系列&#xff0c;没人规定嵌入式软件工程师就只能学习 C 语言和折腾 Linux&#xff0c;不要给自己设限。为什么是每天一…

设计模式 工厂方法_工厂设计模式–一种有效的方法

设计模式 工厂方法如您所知&#xff0c;“工厂方法模式”或俗称“工厂设计模式”是“创意设计模式”类别下的一种设计模式。 模式背后的基本原理是&#xff0c;在运行时&#xff0c;我们根据传递的参数获得类似类型的对象。 关于这种模式的文章很多&#xff0c;开发人员可以通过…

SMPP Java示例(客户端)

这篇文章通过创建一个简单的SMPP客户端向移动用户发送短信来提供SMPP Java示例&#xff0c;使用该客户端我们可以简单地提交以向单个移动用户发送消息&#xff0c;也可以一次将消息广播给多个移动用户。另外&#xff0c;我们将验证交货收据。 出于客户端的目的&#xff0c;我们…

mysql插入另一个表中数据_MySql中把一个表的数据插入到另一个表中的实现

1.如果2张表的字段一致&#xff0c;并且希望插入全部数据&#xff0c;可以用这种方法&#xff1a;INSERT INTO 目标表 SELECT * FROM 来源表;insert into insertTest select * from insertTest2;2.如果只希望导入指定字段&#xff0c;可以用这种方法&#xff1a;INSERT INTO 目…

mysql事务中怎么更改空值_MySQL事务

1.事务1.事务特性--ACIDAtomicity(原子性):要么全做,要么不做,不能只做一半(银行转账)Consistency(约束性):事务的前后,约束都能满足Isolation(依赖性):事务之间是独立的,互不影响的Durability(持久性):事务执行之后,事物的结果可以持久保存2.事务隔离级别:read uncommitted:可…

mysql自定义函数多参数_自定义mysql函数 - 无法传递参数

作为标题状态。这里的功能DELIMITER //CREATE FUNCTION GetCreateValue( table_name CHAR(64), id_field CHAR(64), name_field CHAR(64), name_value CHAR(64) )RETURNS INTEGERBEGINDECLARE ret INTEGER;SELECT count(*) INTO ret FROM table_name WHERE name_field name_va…

与Zapier集成

整合很无聊。 也是不可避免的。 但是我不会写有关企业集成模式的文章 。 相反&#xff0c;我将解释如何创建与Zapier集成的应用程序。 什么是Zapier &#xff1f; 它是一项服务&#xff0c;使您可以通过其API&#xff08;或协议&#xff09;连接两个&#xff08;或多个&#x…