当前位置: 网站首页>小程序开发>400电话办理

唐山小程序制作【唐山企业邮箱】唐山网站外包、唐山微信商城开发、唐山网店美工、唐山淘宝设计

发表日期: 2021-04-10 11:14:47 浏览次数:127

唐山小程序制作【唐山企业邮箱】唐山网站外包、唐山微信商城开发、唐山网店美工、唐山淘宝设计

唐山,简称“唐”,河北省地级市,构建开放型经济新体制综合试点地区 [1]  。位于河北省东部、华北平原东北部,南临渤海,北依燕山,毗邻京津,地处华北与东北通道的咽喉要地,总面积为13472平方千米,是中国(唐山)跨境电子商务综合试验区 [2]  、中国(河北)自由贸易试验区组成部分。 [3-4] 

唐山因唐太宗李世民东征高句丽驻跸而得名,素有“北方瓷都”之称。这里诞生了中国第一座机械化采煤矿井、第一条标准轨距铁路、第一台蒸汽机车、第一桶机制水泥。唐山是中国评剧的发源地,素有“冀东三支花”之称的皮影、评剧、乐亭大鼓,为国家级非物质文化遗产。

2019年,唐山市下辖7个市辖区、3个县级市、4个县 [5]  ,常住人口796.4万人,地区生产总值6890.0亿元,其中,第一产业增加值531.2亿元,第二产业增加值3613.3亿元,第三产业增加值2745.5亿元,三次产业增加值结构为7.7:52.4:39.9。按常住人口计算,全年人均地区生产总值86667元(按年平均汇率折合12563美元)。

1.1.3 gRPC客户端

与服务器端类似,可以使用服务定义生成客户端存根。客户端存根提供了与服务器端类似的方法,供客户端代码进行调用。客户端存根会将这些方法转换成对服务器端的远程函数网络调用。由于 gRPC 服务定义是语言中立的,能够为所支持的任意语言(通过第三方实现)生成客户端和服务器端,因此对于 ProductInfo 服务用例来说,虽然我们的服务器端使用 Go 语言来实现,但是仍可以生成使用 Java 语言的客户端存根。代码清单 1-4 展示了用 Java 语言编写的代码,尽管所使用的编程语言不同,但可以看到,客户端实现仅涉及几个简单的步骤,包括建立与远程服务器的连接、将客户端存根与连接关联到一起,以及使用客户端存根调用远程方法。

代码清单 1-4 调用服务远程方法的 gRPC 客户端

// 使用远程服务器地址创建通道ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8080)
   .usePlaintext(true)
   .build();// 使用通道初始化阻塞式存根ProductInfoGrpc.ProductInfoBlockingStub stub =
       ProductInfoGrpc.newBlockingStub(channel);// 使用阻塞式存根调用远程方法StringValue productID = stub.addProduct(
       Product.newBuilder()
       .setName("Apple iPhone 11")
       .setDescription("Meet Apple iPhone 11." +
            "All-new dual-camera system with " +
            "Ultra Wide and Night mode.")
       .build());复制代码

现在我们已经理解了 gRPC 的关键概念,接下来详细了解 gRPC 客户端–服务器端的消息流。

1.1.4 客户端–服务器端的消息流

当调用 gRPC 服务时,客户端的 gRPC 库会使用 protocol buffers,并将 RPC 的请求编排(marshal)为 protocol buffers 格式,然后将其通过 HTTP/2 进行发送。在服务器端,请求会被解排(unmarshal),对应的过程调用会使用 protocol buffers 来执行。响应会遵循类似的执行流,从服务器端发送到客户端。gRPC 会使用 HTTP/2 来进行有线传输,HTTP/2 是一个高性能的二进制消息协议,支持双向的消息传递。第 4 章将结合 protocol buffers 进一步讨论有关 gRPC 客户端和服务器端消息流的细节,以及 gRPC 对 HTTP/2 的使用方式。

 编排是将参数和远程函数打包的过程,解排则是解包消息到对应的方法调用的过程。

在进一步了解和研究 gRPC 之前,还有一点很重要,那就是了解不同的进程间通信技术,以及它们随时间推移的演化过程。

1.2 进程间通信技术的演化

随着时间的推移,进程间通信技术发生了巨大的变化。各种各样的新技术不断涌现,以满足现代化的需求并提供更好、更高效的开发体验。因此,了解进程间通信技术是如何演化的以及 gRPC 是如何形成的就显得非常重要了。接下来介绍最常用的进程间通信技术,并尝试将它们与 gRPC 进行比较。

1.2.1 传统的RPC

在构建客户端–服务器端应用程序方面,RPC 是很流行的进程间通信技术。借助 RPC,客户端能够像调用本地方法那样远程调用某个方法的功能。早期有一些很流行的 RPC 实现,比如通用对象请求代理体系结构(common object request broker architecture,CORBA)和 Java 远程方法调用(remote method invocation,RMI),它们都用来构建和连接服务或应用程序。但是,大多数传统的 RPC 实现极其复杂,因为它们构建在 TCP 这样的通信协议之上,而这会妨碍互操作性,并且它们还有大量的规范限制。

1.2.2 SOAP

鉴于 CORBA 等传统 RPC 实现的局限性,简单对象访问协议(simple object access protocol,SOAP)应运而生,并且得到了微软、IBM 等企业的大力推广。SOAP 是面向服务的架构(service-oriented architecture,SOA)中的标准通信技术,用于在服务(在 SOA 中通常叫作 Web 服务)之间交换基于 XML 的结构化数据,并且能够基于任意的底层通信协议进行通信,其中最常用的协议是 HTTP。

通过 SOAP,可以定义服务接口、服务的操作以及调用这些操作的 XML 消息格式。SOAP 曾是一项非常流行的技术,但其消息格式的复杂性以及围绕 SOAP 所构建的各种规范的复杂性,妨碍了构建分布式应用程序的敏捷性。因此,在现代分布式应用程序开发中,SOAP Web 服务被认为是一种遗留技术。大多数现有的分布式应用程序采用 REST 架构风格,而非 SOAP。

1.2.3 REST

描述性状态迁移(representational state transfer,REST)架构风格起源于 Roy Fielding 的博士论文。Fielding 是 HTTP 规范的主要作者之一,也是 REST 架构风格的创始人。REST 是面向资源的架构(resource-oriented architecture,ROA)的基础,在这种架构中,需要将分布式应用程序建模为资源集合,访问这些资源的客户端可以变更这些资源的状态(创建、读取、更新或删除)。

REST 的通用实现是 HTTP,通过 HTTP,可以将 RESTful Web 应用程序建模为能够通过唯一标识符访问的资源集合。应用于资源的状态变更操作会采用 HTTP 动词(GET、POST、PUT、DELETE、PATCH 等)的形式,资源的状态会以文本的格式来表述,如 JSON、XML、HTML、YAML 等。

实际上,通过 HTTP 和 JSON 将应用程序构建为 REST 架构风格已成为构建微服务的标准方法。但是,随着微服务的数量及其网络交互的激增,RESTful 服务已经无法满足现代化的需求了。下面介绍 RESTful 服务的 3 个主要局限性,这些局限性妨碍了其作为消息协议在现代微服务应用程序中的运用。

  1. 基于文本的低效消息协议

    从本质上来讲,RESTful 服务建立在基于文本的传输协议(如 HTTP 1.x)之上,并且会使用人类可读的文本格式,如 JSON。但是,在进行服务与服务之间的通信时,通信双方都不需要这种人类可读的文本化格式,这时使用这种格式非常低效。

    客户端应用程序(源)生成需要发送给服务器的二进制内容,然后需要将二进制结构转换成文本(如果使用 HTTP 1.x,就只能发送文本化消息),并通过网络以文本的形式(借助 HTTP)发送到另一台机器上,这台机器需要在服务器端(目标)解析文本并将其转换回二进制结构。其实,我们也可以很轻松地发送映射服务和消费者业务逻辑的二进制内容,采用 JSON 格式主要是因为它是“人类可读的”,相对来说易于使用。这涉及工具选择问题,而不是二进制协议问题。
     

  2. 应用程序之间缺乏强类型接口

    随着越来越多的服务要通过网络进行交互,而且这些服务使用完全不同的语言来构建,缺乏明确定义和强类型的服务接口成了使用 RESTful 服务的主要阻碍。RESTful 中现有的各种服务定义技术(如 OpenAPI/Swagger 等)都是事后的补救措施,并没有与底层的架构风格或消息协议紧密集成在一起。

    在构建这种分散的应用程序时,会遇到很多的不兼容、运行时错误和互操作等问题。例如,在开发 RESTful 服务时,应用程序之间并不需要共享服务定义和类型定义的信息。但是,在开发 RESTful 应用程序时,我们要么通过网络查看文本格式,要么使用第三方 API 定义技术(如 OpenAPI)。因此,现在非常重要的任务就是拥有现代化的强类型服务定义技术以及框架,从而为多语言技术生成核心的服务器端代码和客户端代码。
     

  3. REST 架构风格难以强制实施

    REST 架构风格有很多“好的实践”,只有遵循这些实践,才能构建出真正的 RESTful 服务。但是,由于它们并没有作为实现协议(比如 HTTP)的一部分进行强制的要求,因此在实现阶段,这些实践很难实施。事实上,大多数自称 RESTful 的服务并没有遵循基础的 REST 架构风格,也就是说,这些所谓的 RESTful 服务不过是通过网络公开的 HTTP 服务。因此,开发团队必须花费大量时间来维护 RESTful 服务的一致性和纯度。

    鉴于进程间通信技术在构建现代云原生应用程序时所存在的这些限制,人们开始寻求更好的消息协议。


c51c866ffa1ab3457f2021e8bbdbcc1.jpg


唐山小程序制作唐山企业邮箱唐山网站外包、唐山微信商城开发、唐山网店美工、唐山淘宝设计

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878