精华内容
下载资源
问答
  • Q1:怎么进行分布式部署? airflow celery采用的是消息队列的方式生产任务,分发任务和执行任务,所以想要进行分布式部署,只需要在不同机器上部署完全一样的airflow服务,在borker节点上开启airflow的webserver,...
    • Q1:怎么进行分布式部署?
      airflow celery采用的是消息队列的方式生产任务,分发任务和执行任务,所以想要进行分布式部署,只需要在不同机器上部署完全一样的airflow服务,在borker节点上开启airflow的webserver,scheduler,flower服务以及mysql服务和rabbitMQ服务,在其他机器上设置和borker节点上相同的配置信息,并且只开启worker服务。

    • Q2启用访问认证?

      • 安装用户管理插件 user_management
        插件地址 https://github.com/teamclairvoyant/airflow-user-management-plugin
        使用插件添加用户名和邮箱以及密码
      • 添加配置开启登陆认证
        vim AIRFLOW_HOME/airflow.cfg
        [webserver]
        authenticate = True
        auth_backend = airflow.contrib.auth.backends.password_auth
        重新启动airflow服务,登陆即可
      • 遇到ValueError: too many values to unpack的错误是因为sqlalchemy模块的问题
        执行pip install -U'sqlalchemy==1.1.18'即可解决
    • 怎么添加添加celery的其他配置?(明天补)

    展开全文
  • 分布式部署

    2020-07-18 20:32:26
    为了更好的利用硬件资源,并对硬件资源进行统一调度,一个游戏区所具备的服务器进程不可能跑在一台服务器上面的,一般而言这些服务器进程运行存在不同的服务器上,那么它们之间怎么通信并且区分开来呢?通过一个xml...

    为了更好的利用硬件资源,并对硬件资源进行统一调度,一个游戏区所具备的服务器进程不可能跑在一台服务器上面的,一般而言这些服务器进程运行存在不同的服务器上,即分布式部署,那么运行在不同服务器上的进程之间是怎么通信的呢?根据tcp/ip的socket通信原理,ip地址加端口号即可标识一个进程,所以通过一个xml配置即可实现它们之间的通信:

    <config>

        <server id="1001" type="1" name="superserver" ip="192.168.166.125" port="30101" ext_ip="192.168.166.125" ext_port="30101"/>

        <server id="2001" type="2" name="recordserver" ip="192.168.166.125" port="40101" ext_ip="192.168.166.125" ext_port="40101"/>

        <server id="3001" type="3" name="sessionserver" ip="192.168.166.125" port="50101" ext_ip="192.168.166.125" ext_port="50101"/>

        <server id="4001" type="4" name="sceneserver" ip="192.168.166.125" port="60101" ext_ip="192.168.166.125" ext_port="60101"/>

        <server id="5001" type="5" name="gatewayserver" ip="192.168.166.125" port="70101" ext_ip="192.168.166.125" ext_port="70101"/>

        <server id="6001" type="6" name="functionserver" ip="192.168.166.125" port="80101" ext_ip="192.168.166.125" ext_port="80101"/>

        ...

    </config>

     

    展开全文
  • 本篇讲flume伪分布式部署和测试 flume包括3种节点,一种是agent,一种是collector,一种是master。master用于管理agent和collector。agent和collector是完全一样的,都是从source拉数据,往sink 推数据。所以其不同...

    http://abloz.com

    前一篇《flume日志收集单节点》,讲了怎么安装flume,对单节点模式进行了测试。本篇讲flume伪分布式部署和测试

    flume包括3种节点,一种是agent,一种是collector,一种是master。master用于管理agent和collector。agent和collector是完全一样的,都是从source拉数据,往sink 推数据。所以其不同完全是管理者赋予的。即agent部署在日志源节点。collector接受多个agent的sink作为源,再写到数据层,通常是hdfs或文件系统,供后续分析。
    ==========
    1. 修改flume-conf.xml,将flume.master.servers的value有localhost改为hostname。本步非必须,但为方便起见还是改为hostname省事,方便远程访问。
    [zhouhh@Hadoop48 conf]$ vi flume-conf.xml
    <property>
    <name>flume.master.servers</name>
    <value>hadoop48</value>
    <description>A comma-separated list of hostnames, one for each
    machine in the Flume Master.
    </description>
    </property>

    2.启动
    [zhouhh@Hadoop48 ~]$ flume master

    浏览http://hadoop48:35871/
    Flume Master

    Version: 0.9.4, r8d0aa4be4ee50bb664cb0d1624e5634f46d7b62a
    Compiled: Mon Jun 20 14:48:23 PDT 2011 by jon
    ServerID: 0

    Servers hadoop48

    Node status

    logical node physical node host name status version last seen delta (s) last seen
    Node configuration

    Node Version Flow ID Source Sink Translated Version Translated Source Translated Sink
    Physical/Logical Node mapping

    physical node logical node

    Command history

    id State command line message

    什么都是空的。

    启动一个节点
    [zhouhh@Hadoop48 ~]$ flume node_nowatch

    浏览http://hadoop48:35871/
    Flume Master
    Version: 0.9.4, r8d0aa4be4ee50bb664cb0d1624e5634f46d7b62a
    Compiled: Mon Jun 20 14:48:23 PDT 2011 by jon
    ServerID: 0

    Servers hadoop48

    Node status

    logical node physical node host name status version last seen delta (s) last seen
    Hadoop48 Hadoop48 Hadoop48 IDLE none 4 Mon Jan 21 11:47:48 CST 2013
    Node configuration

    Node Version Flow ID Source Sink Translated Version Translated Source Translated Sink
    Physical/Logical Node mapping

    physical node logical node
    Hadoop48 Hadoop48
    Command history

    id State command line message

    可以看到用hostname做缺省节点名的节点hadoop48

    3.启动一个connect co1和一个agent ag1,名字根据自己喜好起。-n参数表示后跟名字。
    [zhouhh@Hadoop48 ~]$ flume node_nowatch -n co1
    [zhouhh@Hadoop48 ~]$ flume node_nowatch -n ag1
    2013-01-21 16:32:47,511 [main] WARN mortbay.log: failed SelectChannelConnector@0.0.0.0:35862: java.net.BindException: Address already in use
    2013-01-21 16:32:47,512 [main] WARN mortbay.log: failed Server@7f2315e5: java.net.BindException: Address already in use
    2013-01-21 16:32:47,512 [main] WARN util.InternalHttpServer: Caught exception during HTTP server start.
    java.net.BindException: Address already in use

    因为在一台机器机器启动,所以后一个node启动时会报端口35862被占用的警告,该端口是通过浏览器查看node信息的。忽略不管。

    浏览http://hadoop48:35871/flumemaster.jsp
    Node status

    logical node physical node host name status version last seen delta (s) last seen
    ag1 ag1 Hadoop48 IDLE none 0 Mon Jan 21 16:41:39 CST 2013
    co1 co1 Hadoop48 IDLE none 4 Mon Jan 21 16:41:35 CST 2013

     

    4.执行命令

    在浏览器配置页执行命令http://hadoop48:35871/flumeconfig.jsp
    Configure multiple nodes:
    填写如下命令,提交。再回到master页面看命令执行是否成功。

    ag1 : console | agentSink("localhost",35853) ;
    co1 : collectorSource(35853) | console ;

    这是对两个节点同时提交命令。前一个命令表示agent ag1的source是console,sink是agentSink,往 localhost的35853端口写数据。
    后一个命令表示source是collectorSource(35853),即从35853端口接受数据,sink是控制台。中间用管道符|隔开。
    其格式为:

    nodename1: source1 | sink1;
    nodename2: source2 | sink2;
    ...

     

    下一个命令agent ag1的源是从tcp端口5140接受数据,sink写到localhost的35853端口。collector co1将从源localhost的35853端口收集到的数据写到临时文件夹file:///tmp/flume/collected,并采用syslog的格式。

    ag1 : syslogTcp(5140) | agentSink("localhost",35853) ;
    co1 : collectorSource(35853) | collectorSink("file:///tmp/flume/collected", "syslog");

    下一个命令agent ag1的源是从tcp端口5140接受数据,sink写到localhost的35853端口。collector co1将从源localhost的35853端口收集到的数据写到hdfs文件夹hdfs://hadoop48:54310/user/flume/,并采用syslog的格式。但hdfs里面保存的数据缺省格式是json的。

    ag1 : syslogTcp(5140) | agentSink("localhost",35853);
    co1 : collectorSource(35853) | collectorSink("hdfs://hadoop48:54310/user/flume/","syslog");

    我们测试最后一种,写hdfs。

     

    5.写hdfs
    写之前查看一下hdfs文件系统:
    [zhouhh@Hadoop48 conf]$ hadoop fs -ls hdfs://hadoop48:54310/user
    Found 1 items
    drwxr-xr-x – zhouhh supergroup 0 2013-01-10 17:52 /user/zhouhh

    到http://hadoop48:35871/flumeconfig.jsp执行命令。

    到http://hadoop48:35871/flumemaster.jsp的Command history查看命令执行结果,看看state是不是SUCCEEDED

    id State command line message
    9 SUCCEEDED multiconfig [ag1 : syslogTcp(5140) | agentSink("localhost",35853) ; co1 : collectorSource(35853) | collectorSink("hdfs://hadoop48:54310/user/flume/","syslog");]

    往agent监听的tcp端口5140写syslog兼容的日志数据。<37>的意思是日志分类和log级别。
    [zhouhh@Hadoop48 ~]$ echo “<37>hello zhouhh syslog” | nc -t localhost 5140

    查看hdfs文件系统:
    [zhouhh@Hadoop48 ~]$ hadoop fs -ls /user
    Found 2 items
    drwxr-xr-x – zhouhh supergroup 0 2013-01-21 16:52 /user/flume
    drwxr-xr-x – zhouhh supergroup 0 2013-01-10 17:52 /user/zhouhh

    目录创建成功。
    检查文件:
    [zhouhh@Hadoop48 ~]$ hadoop fs -ls /user/flume
    Found 1 items
    -rw-r–r– 2 zhouhh supergroup 725 2013-01-21 16:52 /user/flume/syslog20130121-165237236+0800.2008611595205560.00000022
    [zhouhh@Hadoop48 ~]$ hadoop fs -cat /user/flume/syslog20130121-165237236+0800.2008611595205560.00000022
    {“body”:”hello zhouhh syslog”,”timestamp”:1358758047593,”pri”:”INFO”,”nanos”:2008301952329560,”host”:”Hadoop48″,”fields”:{“AckTag”:”20130121-164721805+0800.2008296164296560.00000020″,”syslogfacility”:”\u0004″,”AckType”:”msg”,”AckChecksum”:”\u0000\u0000\u0000\u0000>i??”,”syslogseverity”:”\u0005″,”rolltag”:”20130121-165237236+0800.2008611595205560.00000022″}}

    可以看到json格式的hdfs文件的body,正是我发送的hello zhouhh syslog.syslogfacility 是4,syslogseverity是5. 即<37>表示的意思。
    伪分布式flume测试成功。

     

    6.参考

    http://archive.cloudera.com/cdh/3/flume/UserGuide/index.html

    展开全文
  • 系统A和系统B分别部署在不同的服务器上!那么他们之间是怎么相互调用的呢? Java中常见的远程调用方式:Socket、Http、TCP、UDP、RPC、RMI、JMS、WebService…… 常见的框架介绍1:Hessian:类似于RMI,使用二...

    1.模块间的相互调用

    系统A和系统B分别部署在不同的服务器上!那么他们之间是怎么相互调用的呢?

    Java中常见的远程调用方式:
    Socket、Http、TCP、UDP、RPC、RMI、JMS、WebService……

    常见的框架介绍
    1:Hessian:类似于RMI,使用二进制消息来进行远程调用。与RMI不同的是,它的二进制消息可以在非Java中使用,它实现了一种跨编程语言的对象序列化方法
    2:Burlap:是一种基于XML的远程调用技术,但和其他基于XML的远程技术(如SOAP或XML-RPC)不同,Burlap的消息结构是尽可能的简单,不需要额外的外部定义
    语言(如WSDL)
    3:Dubbo:阿里开源的分布式服务框架,通过高性能的RPC实现远程服务的调用,可以和Spring框架无缝集成,其架构类似于ESB。
    4:Spring的HttpInvoker:类似于RMI,基于HTTP协议来进行远程调用,使用java的序列化机制,要求客户端和服务端都是基于Java的
    5:WebService

    方案的选择
    一:如果系统全部为内部可控的
    1:量级不太大,可以考虑使用Hessian/ Burlap
    2:量级较大,且交互要求较高,那么dubbo是一个现成、成熟的选择
    缺点:需要很多额外的成本,比如学习成本,按需改进的成本等
    3:交互要求并不高,主要是相互调用的需求,可以考虑自己实现
    优点:完全按需定制,完全可控,升级、改进和完善都方便
    缺点:需要投入开发成本,且完善成熟有一个过程
    二:系统包含很多外部的应用,不能全部可控,且很多异构的系统
    1:如果要求不是很复杂的话,WebService 是不错的选择
    2:如果要求非常复杂,且涉及很多业务流,那就选择一个ESB平台

    webservice的使用原理如下

    一种更流行的方式是采用http+josn的方式

    更多需要考虑的问题
    1:长连接,连接池,可以考虑HttpClient
    2:高并发,多线程池,可以考虑使用apache的common-pool
    3:快速的网络传输,可以考虑使用NIO,比如:Mina框架,Netty框架等
    4:大数据量,数据压缩传输,可以考虑Java的GZip
    5:可用性、稳定性、容错
    6:分布式的事务
    7:访问安全、数据安全等
    8:服务的集群,服务的注册和管理等
    ……

     

    转载于:https://www.cnblogs.com/winner-0715/p/6294991.html

    展开全文
  • es生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片? 这个问题,包括后面的redis什么的,谈到es、redis、mysql分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,...
  • 项目中有多个server,web端的请求通过分发派遣到各个server进行处理,而处理的时候需要根据请求使用不同JS脚本。此时能不能把这些将被调用的JS集中放置在一个server(称为A)中,当其他几个server有请求时,会发送一...
  • 本地部署只适用于开发环境,生产环境需要采用分布式部署,教程后面会为大家讲解怎么进行分布式部署。 环境准备 Apollo 采用 Java 语言开发,部署环境必须安装了 Java,版本要求:Java 1.8+。Apollo 的数据都存储的 ...
  • 最近在学习Elasticsearch中间件和FastDFS分布式文件存储系统,最大的体会就是学不下去。 想了一下,我的学习方法就是按照教学视频部署,测试,然后都是一堆枯燥的计算机指令,感觉学久了,好像也没学到什么,反而还...
  • 本地部署只适用于开发环境,生产环境需要采用分布式部署,教程后面会为大家讲解怎么进行分布式部署。 环境准备 Apollo 采用 Java 语言开发,部署环境必须安装了 Java,版本要求:Java 1.8+。Apollo 的数据都存储的 ...
  • 本地部署只适用于开发环境,生产环境需要采用分布式部署,教程后面会为大家讲解怎么进行分布式部署。1. 环境准备Apollo 采用 Java 语言开发,部署环境必须安装了 Java,版本要求:Java 1.8+。Apollo 的数据都存储的 ...
  • 目录 Apollo 本地部署 ...本地部署只适用于开发环境,生产环境需要采用分布式部署,教程后面会为大家讲解怎么进行分布式部署。 环境准备 Apollo 采用 Java 语言开发,部署环境必须安装了 Java,版本要求:Ja.
  • 上一篇讲到了,Core的内置缓存:IMemoryCache,以及缓存的...分布式缓存重点是在分布式上,相信大家接触过的分布式有很多中,像分布式开发,分布式部署,分布式锁、事物、系统 等有很多。使我们对分布式本身就有一个...
  • 由于采用多机器进行分布式部署的方式提供服务,必然存在着数据的复制。分布式系统的数据复制需求主要来源于以下两个原因: 1.为了增加系统的可用性,以防止单点故障引起的系统不可用; 2.提高系统的整体性能,通过...
  • 一: 背景 软件系统中,定时任务往往不可或缺,大家可能会采用Springquartz 建立定时... 当任务模块进行分布式部署,通常会出现定时任务重复执行的情况。 怎么避免这种情况呢,是否可以构建一个任务注册中心,...
  • 分布式文件上传

    2019-06-09 14:43:52
    如果我们的项目部署在一台服务器上,那么所有的资源都在这台服务器上,如果项目部署在集群上,通过负载均衡算法,进行资源请求,在分布式系统中不能保证所有的请求都发送到其中某一台服务器上,就会出现资源访问不到...
  • 分布式锁实现原理

    2018-07-08 16:37:00
    但是在分布式架构,都会是多模块独立部署不同机器,多进程情况下,怎么弄? 比如3个系统,订单,发货,结算都要去操作同一个文件 分布式锁 1.通过数据库的方式解决 create table lock( id methodname 唯一约束 ) ...
  • AspNetCore 使用Redis实现分布式缓存上一篇讲到了,...一、文章概念描述分布式缓存描述:分布式缓存重点是在分布式上,相信大家接触过的分布式有很多中,像分布式开发,分布式部署,分布式锁、事物、系统 等有很多...
  • 通常我们使用quartz,单独部署一个实例来进行任务调度,然后就会存在单点的风险,quartz帮我们实现了多台实例时候的高可用,保证同一时间只有一个任务会被执行,下面我们来看一下具体是怎么实现的。实现原理Quartz’...
  • 分布式项目中,关于定时任务的操作,大家是否思考过如下问题: 1、你们的项目是分布式的,项目定时任务这一块是怎么做的? 2、多台机器集群部署的定时任务如何保证不被重复执行? 3、不重启服务的情况如何动态地...
  • 就下来我们就python分布式爬虫中的消息队列进行详细解释,小伙伴们可以进一步了解一下。 实现分布式爬取的关键是消息队列,这个问题以消费端为视角更容易理解。你的爬虫程序部署到很多台机器上,那么他们怎么知道...
  • 如果jenkins部署在linux服务器上,怎么来执行本地自动化测试,怎么来提高测试效率,或者如何进行浏览器兼容测试,怎么来简化繁琐的部署,不可能每个测试机子都部署一个jenkins来启动持续集成,目前有挺多方式来解决...
  • 尤其是jmeter,java本来性能就不是很好,并发特别多的时候,jmeter的性能会急剧下降,正常的接口,若单台压力机,超过1000并发以后,jmeter的性能就不怎么行了 所以需要多个压力机,即多个机器部署jmeter产生压力 ...
  • 在其和实现中已经进行了很多思考,各个组件之间的清晰分离,包括存储,分布式共识和API。 怎么样? rqlite使用在SQLite数据库的所有实例之间达成共识,从而确保对系统所做的每个更改都是针对一定数量SQLite数据库...
  • # Net Core集成Exceptionless分布式日志功能以及全局异常过滤 相信很多朋友都看过我的上篇关于Exceptionless的简单入门教程asp.Net Core免费开源分布式异常日志收集框架Exceptionless...以及怎么进行本地部署和...
  • 分布式数据层TDDL.zip

    2019-07-16 03:44:44
    TDDL所处的位置(tddl通用数据访问层,部署在客户端的jar包,用于将用户的SQL路由到指定的数据库中): 淘宝很早就对数据进行过分库的处理, 上层系统连接多个数据库,中间有一个叫做DBRoute的路由来对数据进行...
  • redis——分布式锁使用场景:问题一:高并发场景下会出现库存扣减异常;问题二:多实例部署,synchronized锁失效的问题;问题三:当方法执行过程中代码执行出现异常,锁无法删除的问题:问题四:如果方法执行过程中...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 210
精华内容 84
关键字:

怎么进行分布式部署