精华内容
下载资源
问答
  • ​ 本文章解决的是关于fabric-ca-server与fabric-ca-client之间使用tls进行通信的问题,包括fabric-ca-server与fabric-ca-client的安装以及关于tls通信的说明。 1.1fabric-ca-server与fabric-ca-client的安装 ​ ...
  • ServiceFabric.ServiceBus.Services 包含ICommunicationListener实现,这些实现从Azure Service Bus(队列/订阅)接收消息。 从队列接收: ServiceBusQueueBatchCommunicationListener ...
  • Docker容器通信主要分为以下几类: 容器和主机通信 同一主机上两个容器的通信 跨主机的两个容器的通信 首先,当Dokcer安装完成后,它会在主机安装一块虚拟网卡docker0,使用命令 ifconfig 查看网卡 所以本机所有...

    Docker容器通信主要分为以下几类:

    • 容器和主机通信
    • 同一主机上两个容器的通信
    • 跨主机的两个容器的通信

    首先,当Dokcer安装完成后,它会在主机安装一块虚拟网卡docker0,使用命令

    ifconfig
    

    查看网卡
    ifconfig
    所以本机所有的容器都是在172.17.0.1网段下,这个很重要,可以理解为是主机在容器局域网的IP地址。
    docker局域网
    整个Docker网络通信机制如上图所示,当容器创建时,Docker会随机分配该网段下的一个IP地址。

    容器与主机通信

    显然,容器与主机通信不能通过localhost:127.0.0.1网址,而应该是docker0:172.17.0.1

    同一主机上两个容器的通信

    可以使用该网段下分配的IP地址进行通信,但这是静态的,当容器重新创建后,IP地址也会发生变化。因此可以采用bridge模式,通过容器名进行通信。这种方式请自行查阅资料。

    跨主机的两个容器的通信

    通过主机的本地IP进行通信,即10.10.45.66->10.10.45.67。在容器创建时,可以指定extra_hosts字段需要通信的主机容器名与IP的绑定,容器启动后会写入其hosts文件中,通过容器名即可通信。

    docker-compose环境变量的设置

    由于主机数量的不足,我们通常会一台主机部署多个Fabric容器,因此端口必须设置清楚。假设一台主机上部署两个peer容器,因为peer容器的监听端口为7051,链码监听端口为7052,事件监听端口为7053,因此一台主机上有两个peer容器时,外部访问会发生冲突。
    端口设置

    ports字段,peer1设置端口7051和主机的8051绑定,但是内部仍要指定为7051,因为同一主机上的两个容器的IP是不同的,所以不用担心端口冲突,只有跨主机通信时是需要考虑的。

    展开全文
  • 系列链接 ServiceFabric系列之一: ...ServiceFabric系列之三: 服务与服务之间是如何通信的——DNS服务 ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理 目的 服务与服务之间的通信除了使用DNS...

    系列链接

    ServiceFabric系列之一: ServiceFabric理论介绍

    ServiceFabric系列之二: 在Windows上创建容器应用并部署到ServiceFabric中

    ServiceFabric系列之三: 服务与服务之间是如何通信的——DNS服务

    ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理

    目的

    服务与服务之间的通信除了使用DNS服务外,还可以使用ServiceFabric中内置的反向代理服务,我们来学习它。

    反向代理介绍

    反向代理是在每个节点上运行的服务,它支持从集群内部访问微服务,也支持从集群外部访问微服务。反向代理在本地节点上公开一个或多个终结点,以供客户端服务用来向其他服务发送请求,请看下图

    在集群内部访问微服务

    通过portal.azure.com创建集群的时候就需要启用它,如果你希望更新现有的集群,参考此链接

     可以看到这里这里启用的反向代理端口是19081,它会在群集中的每一台机器上打开这个端口。然后我们在集群里的虚拟机中访问 http://localhost:19081/ServiceFabricDemo/BackendContainerService/api/Values

    img

    可以看出,是可以通过反向代理进行访问的。

    在集群外部访问微服务

    通常外部客户端无法直接访问集群里的每个服务,可以使用Azure 负载均衡器来充当微服务和外部客户端之间的网络边界,所以需要在负载均衡器里面配置,如下图。

    img

    现在可以从群集外部访问群集中公开 HTTP 终结点的所有微服务,这意味着微服务设计为内部的可能会被确定的恶意用户发现,可对反向代理进行设置,转发到安全的 HTTP 服务,这里暂不演示。下图为从外部通过反向代理访问后端的API服务,访问的地址是:http://servicefabricdemo.eastus2.cloudapp.azure.com:19081/ServiceFabricDemo/BackendContainerService/api/Values

    img

    所以这里,也可以将前端angular项目中的链接(第14行)替换为上面的链接。

    相关链接

    https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy

    https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reverseproxy-setup#enable-reverse-proxy-via-azure-resource-manager-templates

    总结与讨论

    分别在什么情况使用DNS服务和反向代理服务呢?

    如果部署多个服务,可以使用 DNS 名称找到用于通信的其他服务的终结点。 DNS 服务适用于无状态服务,在 Service Fabric 版本 6.3 和更高版本中,它也适用于有状态服务。 对于运行低于 Service Fabric 6.3 版本的 有状态服务,可以使用 HTTP 调用的内置反向代理服务调用特定的服务分区。
    DNS 服务不支持动态端口。 可以通过反向代理服务解析使用动态端口的服务。

     

     

    展开全文
  • 系列链接 ServiceFabric系列之一:...ServiceFabric系列之三: 服务与服务之间是如何通信的——DNS服务 ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理 目的 在平常做项目的时候,如果有两个后端...

    系列链接

    ServiceFabric系列之一: ServiceFabric理论介绍

    ServiceFabric系列之二: 在Windows上创建容器应用并部署到ServiceFabric中

    ServiceFabric系列之三: 服务与服务之间是如何通信的——DNS服务

    ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理

    目的

    在平常做项目的时候,如果有两个后端服务(比如两个后端API服务),我们希望更轻松地在两个服务之间建立连接,直接在同一个集群内部进行互相访问和通信,而不希望它们之间通过暴露给外部的URL进行通信(例如:服务B暴露给外部的URL是URL_B,如果服务A访问服务B通过URL_B访问的话,就绕弯路了)。本文将介绍ServiceFabric Cluster中的服务是如何在同一个集群内部建立连接和通信的。

    服务发现和解析介绍

    服务是有生命周期的,使用凡人皆有一死来描述服务很贴切,特别是在分布式系统中,服务可能随时间推移从一台计算机移动到另一台计算机,这意味着服务终结点地址会在服务移动到具有不同 IP 地址的节点时发生更改,并且可能在不同端口上打开(如果服务使用动态选择的端口)。那这样就引出了一个问题, 服务的IP地址不断地在变,那我们如何使用这个服务呢?

    命名服务

    Service Fabric 提供一种服务发现和解析服务,称为“命名服务”, 命名服务的名称看起来像这样:"fabric:/MyApplication/MyService",Service Fabric 具有一个注册机构,它维护一个表,将服务名称映射到其终结点地址,我们用得时候只需要使用命名服务的名称就可以了,它所对应的服务的IP地址由Service Fabric 自行维护,这与Web 上的 DNS(将网站 URL 解析为 IP 地址)类似。

    目前看起来只要使用了命名服务之后就已解决了服务器之间的通信问题,只需要知道命名服务的名称就可找到服务的实际终结点(IP+Port)。但通常来说,我们希望通过URL(比如其它容器化服务)来访问此服务,而不是通过一个服务的名称来访问,所以我们需要一个DNS 服务。

    DNS 服务

     DNS 服务能够使用标准 DNS 协议将 DNS 名称映射到服务名称,命名服务将服务名称进行解析并将其发送回服务终结点。请求的图看起来像下面这样。

     同一个集群内的服务采用DNS通信

    首先Service Fabric cluster需要启用DNS Service,如果你是使用port.azure.com或Visual Studio创建的集群,那默认包含了DNS Service,如下图。

     

     当然你也可以在当前的service fabric所在的资源组里可以检查或更新是否启用 DNS 服务,如下图

     在ServiceFabricDemo项目中,ApplicationManifest.xml中设置服务的 DNS 名称,吐血推荐你使用 <ServiceDnsName>.<AppInstanceName>的命名规范,这里使用ServiceDnsName="BackendContainerService.ServiceFabricDemo",如下是完整的ApplicationManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <ApplicationManifest ApplicationTypeName="ServiceFabricDemoType"
                         ApplicationTypeVersion="1.0.0"
                         xmlns="http://schemas.microsoft.com/2011/01/fabric"
                         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Parameters>
        <Parameter Name="FrontendContainerService_InstanceCount" DefaultValue="-1" />
        <Parameter Name="BackendContainerService_InstanceCount" DefaultValue="-1" />
        <Parameter Name="MyContainerService_InstanceCount" DefaultValue="-1" />
      </Parameters>
      <!-- Import the ServiceManifest from the ServicePackage. The ServiceManifestName and ServiceManifestVersion 
           should match the Name and Version attributes of the ServiceManifest element defined in the 
           ServiceManifest.xml file. -->
      <ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="FrontendContainerServicePkg" ServiceManifestVersion="1.0.0" />
        <ConfigOverrides />
        <Policies>
          <ContainerHostPolicies CodePackageRef="Code">
            <!-- See https://aka.ms/I7z0p9 for how to encrypt your repository password -->
            <RepositoryCredentials  AccountName="accenturecode" Password="Jb4tScXXXXXXXXXXXFKxwq76" PasswordEncrypted="false" />
            <PortBinding ContainerPort="80" EndpointRef="FrontendContainerServiceTypeEndpoint" />
          </ContainerHostPolicies>
        </Policies>
      </ServiceManifestImport>
      <ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="BackendContainerServicePkg" ServiceManifestVersion="1.0.0" />
        <ConfigOverrides />
        <Policies>
          <ContainerHostPolicies CodePackageRef="Code">
            <!-- See https://aka.ms/I7z0p9 for how to encrypt your repository password -->
            <RepositoryCredentials  AccountName="accenturecode" Password="Jb4tScXXXXXXXXXXXFKxwq76" PasswordEncrypted="false" />
            <PortBinding ContainerPort="80" EndpointRef="BackendContainerServiceTypeEndpoint" />
          </ContainerHostPolicies>
        </Policies>
      </ServiceManifestImport>
      <!--<ServiceManifestImport>
        <ServiceManifestRef ServiceManifestName="MyContainerServicePkg" ServiceManifestVersion="1.0.0" />
        <ConfigOverrides />
        <Policies>
          <ContainerHostPolicies CodePackageRef="Code">
            --><!-- See https://aka.ms/I7z0p9 for how to encrypt your repository password --><!--
            <RepositoryCredentials AccountName="" Password="" PasswordEncrypted="true" />
            <PortBinding ContainerPort="80" EndpointRef="MyContainerServiceTypeEndpoint" />
          </ContainerHostPolicies>
        </Policies>
      </ServiceManifestImport>-->
      <DefaultServices>
        <!-- The section below creates instances of service types, when an instance of this 
             application type is created. You can also create one or more instances of service type using the 
             ServiceFabric PowerShell module.
             
             The attribute ServiceTypeName below must match the name defined in the imported ServiceManifest.xml file. -->
        <Service Name="FrontendContainerService" ServicePackageActivationMode="ExclusiveProcess">
          <StatelessService ServiceTypeName="FrontendContainerServiceType" InstanceCount="[FrontendContainerService_InstanceCount]">
            <SingletonPartition />
          </StatelessService>
        </Service>
        <Service Name="BackendContainerService" ServicePackageActivationMode="ExclusiveProcess" ServiceDnsName="BackendContainerService.ServiceFabricDemo">
          <StatelessService ServiceTypeName="BackendContainerServiceType" InstanceCount="[BackendContainerService_InstanceCount]">
            <SingletonPartition />
          </StatelessService>
        </Service>
        <!--<Service Name="MyContainerService" ServicePackageActivationMode="ExclusiveProcess">
          <StatelessService ServiceTypeName="MyContainerServiceType" InstanceCount="[MyContainerService_InstanceCount]">
            <SingletonPartition />
          </StatelessService>
        </Service>-->
      </DefaultServices>
    </ApplicationManifest>

    右击ServiceFabricDemo, 点击Publish,在弹出的框中直接点击Publish来重新部署,不超过10秒就部署好了,我们看一下Service Fabric Explorer, 可以看到Service的DNS Name.

     我们直接可以在Cluster内部使用此DNS Name进行访问,我们来验证一下。先找到Virtual machine scale set,它有一个公网IP,我们使用创建Cluster时输入的用户名和密码登录到此虚拟机中。

     

     输入PowerShell命令,向http://backendcontainerservice.servicefabricdemo:83/api/Values发起请求

    invoke-webrequest -uri http://backendcontainerservice.servicefabricdemo:83/api/Values

     可以看到使用此DNS Name在集群内可以正常访问,并返回了结果。

    相关链接

    https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-connect-and-communicate-with-services

    总结与讨论

    本应该创建另一个后端的服务通过DNS服务来发送此请求的,本文这里只写了一条PowerShell命令来验证在集群内部可以通过DNS Name进行访问,但这已经足够了。

    也许你会有一个疑问,可以在前端angular的代码中采用DNS通信的方式来访问后端吗?不可以,因为当你访问前端网站时,前端向后端发起的API请求实际上是你本机的浏览器向Service Fabric集群里的后端服务发起API请求,你本机的浏览器相对于Service Fabric集群来说是外部请求,而DNS通信的方式是用于服务之间的内部通信。

    展开全文
  • 德州理查森--(美国商业资讯)--行业唯一端到端、云原生网络软件提供商Mavenir今日宣布推出动态、流畅的业务通信框架Mobile Business Fabric™,该框架旨在满足企业随着移动性成为主要推动因素及客户需求变化而不断...

    让通信服务提供商和合作伙伴能够提供颠覆性的移动原生用户体验,使企业可以通过其移动设备与客户协作和互动

     

    德州理查森--(美国商业资讯)--行业唯一端到端、云原生网络软件提供商Mavenir今日宣布推出动态、流畅的业务通信框架Mobile Business Fabric™,该框架旨在满足企业随着移动性成为主要推动因素及客户需求变化而不断增加的数字需求。

     

    Mavenir的Mobile Business Fabric™由一系列综合业务解决方案组成,致力于为从中小企业(SMB)到大型企业的各种规模企业的无桌移动工作者提供支持。该解决方案组合将移动语音、移动视频、富通信服务(RCS)和短信消息传递、语音邮件、交互式语音响应(IVR)、聊天机器人、SpamShield™欺诈管理和货币化促成要素整合到安全的电信级云产品中。

     

    这些解决方案与数字化支持功能相结合,可通过直观的全渠道界面帮助企业开通服务、引导流程和开具发票。这一嵌入式功能可避免与服务提供商或渠道合作伙伴的现有旧版业务支持系统(BSS)的时间长、复杂且昂贵的整合,从而缩短产品上市时间和创收时间。

     

    Mavenir的Mobile Business Fabric解决方案目前已在美国、英国、西班牙、德国、印度和日本的多个一级移动网络运营商(MNO)中完成部署或部署中。

     

    Mavenir移动企业解决方案高级副总裁兼总经理Guillaume Le Mener表示:“Mavenir的愿景是重新定义移动网络经济,帮助移动运营商和渠道合作伙伴加速业务转型。Mobile Business Fabric是一款有凝聚性的解决方案组合,可提供真正的移动原生体验,并帮助无桌移动用户群创造更多的收入来源,保护其现有客户群,以及减少客户流失。”

     

    支持信息:

     

    • 如今,全球80%的劳动力为一线“无桌”移动工作者,排名前八的无桌行业包括农业、教育、医疗、零售、酒店、制造、交通运输和建筑——雇员达27亿i。
    • 无桌移动工作者需要简化的工作流程,以随时随地利用其强大的移动设备。
    • 如今,市场上的大多数解决方案都是为办公室人员而设计,然后经过调整,以涵盖一些受限的移动功能。这可能让用户失望,尤其是服务匮乏的新兴移动型中小企业(SMB)。

     

    Mavenir的Mobile Business Fabric通过移动原生组合颠覆了这一范式,该组合不需要IT管理员、硬件投资或复杂的设备管理,同时提供顺畅无碍的引导流程,以助力缩短创收时间。

     

    全球企业渠道高级副总裁Marek Wasilewski表示:“Mavenir的Mobile Business Fabric组合是一款创新、敏捷的软件即服务(SaaS)解决方案,有助于我们的全球合作伙伴瞄准企业市场以及服务欠缺的SMB市场。我们为无桌移动工作者——通常具备‘我想自己做,而且我现在就要’的心态——设计的颠覆性解决方案不仅简化引导流程,消除管理复杂性,并且最终致力于带来更多的积极的业务成果。”

     

    Mobile Business Fabric组合通过以下解决方案进入市场:

     

    • 移动业务消息传递 — RCS业务消息传递即服务,让MNO能够满足品牌在移动消息传递渠道(包括营销活动(A2P)和聊天机器人(P2A))上与客户沟通的需求,并利用Mavenir的RBM合作伙伴生态系统(RBM Partner Ecosystem)来加快创收。
    • 移动业务联系 利用可快速便捷访问的白标签全渠道联络中心即服务(CCaaS),帮助各种规模的企业尽可能减少错过的商机。它有助于与客户进行顺畅无碍的全渠道(电话、电子邮件、聊天、短信、社交媒体)互动;使用预构建的模板进行快速部署,并与受欢迎的工具和人工智能(AI)平台实现应用编程接口(API)集成。
    • 移动业务通信与协作 — 基于移动呼叫控制元素的统一通信和协作即服务(UCaaS),利用强制实施移动网络服务质量(QoS)实施和RCS消息传递功能,使企业能够与内外部用户用文本信息交流,打破实施专有即时消息传递的传统限制。

     

    宣布推出的Mobile Business Fabric解决方案即日起以Mavenir云托管的形态或以部署在服务提供商的网络中的方式供应。Mavenir已在调整更多产品和解决方案以纳入Fabric之中,预计在2020年初完成。

     

    欲了解更多信息,敬请访问Mavenir的Mobile Business Fabric页面

     

    注:Mavenir将在2019洛杉矶世界移动通信大会上通过现场演示展示Mobile Business Fabric。如欲安排会议,敬请访问https://mavenir.com/buzz/events/mwc-la-2019

     

    关于Mavenir

     

    Mavenir是业内唯一的端到端、云原生网络软件提供商,致力于在网络基础架构堆栈的每一层提供全面的端到端产品组合,加快软件网络转型并重新定义通信服务提供商(CSP)的网络经济学。从5G应用/服务层到分组核心和无线接入网(RAN),Mavenir在演进型云原生网络解决方案方面均处于领先地位,并为最终用户提供创新、安全的体验。Mavenir借助其在VoLTE、VoWiFi、高级信息(RCS)、Multi ID、vEPC和虚拟化RAN等领域的一系列行业领先的首创技术,在加快网络转型方面为130多个国家的250余个通信服务提供商客户提供了助力,服务于全球50%以上的用户。

     

    我们应用有助于推动服务敏捷性、灵活性和速度的突破性、创新性技术架构和商业模式。凭借推动NFV演进以实现网络规模经济的解决方案,Mavenir为通信服务提供商提供一系列有助于降低成本、创造收入和保护收入的解决方案。欲了解详情,请访问:mavenir.com

     

    MavenirM标识和CloudRangeMavenir Systems, Inc.拥有的商标。

     

    ©2019 Mavenir Systems, Inc.版权所有。保留所有权利。

     

    i Emergence:《无桌劳动力的崛起》(Rise of the Deskless Workforce),2018年

    展开全文
  • 同一个k8s namespace下不同网段的通信 建议在开始前,先在所有node节点上将master的admin.conf拷贝过来并做如下操作 [root@node02 ~]# scp root@192.168.122.116:/etc/kubernetes/admin.conf /etc/kubernetes/...
  • 10.Engine接口负责管理Peer通信(Handlers)和交易的进程, GetHandlerFactory 返回一个handler句柄来接收聊天流 type Engine interface { TransactionProccesor GetHandlerFactory() HandlerFactory...
  • Fabric-CA

    2020-04-17 19:41:14
    Fabric CA概述 参考 下图展示了Hyperledger Fabric CA服务器在整个Heyperledger Fabric架构中的定位: 有两种方式可以与Hyperledger Fabric CA服务器交互: ...所有与Hyperledger Fabric CA服务器的通信都是 使用R...
  • 系列链接 ServiceFabric系列之一:...ServiceFabric系列之三: 服务与服务之间是如何通信的——DNS服务 ServiceFabric系列之四: 服务与服务之间是如何通信的——反向代理 简介 理论介绍稍后写,先看第二篇吧,此篇...
  • 写于2018.12, fabric版本较低, 仅供学习交流 Fabric架构图 Fabric架构分层图 Fabric交易流程 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p20jGE5P-1620970708006)(./img/Fabric交易...
  • ICommunicationClient (Service Fabric SDK的一部分)的实现,用于Service Fabric服务之间基于HTTP的通信。 它解析服务并包含重试逻辑。 请查看以获取详细信息。 C3.ServiceFabric.HttpServiceGateway 一个基于...
  • 08.FabricFabric-ca的编程接口

    千次阅读 2018-10-16 10:45:39
    导语 Fabric的Peer节点和Orderer节点都提提供了基于GRPC协议的接口,通过...8.1 Fabric接口的通信协议和功能划分 1.Grpc协议 开源的远程过程调用 RPC系统 2.Fabric模块的Grpc接口 Peer 模块和 Orderer 模块提供了...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 248
精华内容 99
关键字:

通信fabric