|
|
51CTO旗下网站
|
|
移动端

2.3.3.2 配置Service Manifest

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍配置Service Manifest。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-12 17:30

2.3.3.2 配置Service Manifest

创建完文件结构后,就可以进行服务配置和应用配置,在配置中设置NodeJs 服务的启动入口和端口,在应用配置中引用服务的配置。具体的设置请参考以下两个文件的配置代码。

ServiceManifest.xml 代码文件内容:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <ServiceManifest Name="NodeJSServicePkg"  
  3. Version="1.0.0"  
  4. xmlns="http://schemas.microsoft.com/2011/01/fabric"  
  5. xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
  6. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
  7. <ServiceTypes> 
  8. <StatelessServiceType ServiceTypeName="NodeJSServiceType" UseImplicitHost 
  9. ="true" /> 
  10. </ServiceTypes> 
  11. <CodePackage Name="Code" Version="1.0.0"> 
  12. <EntryPoint> 
  13. <ExeHost> 
  14. <Program>node.exe</Program> 
  15. <Arguments>App.js</Arguments> 
  16. <WorkingFolder>CodePackage</WorkingFolder> 
  17. <ConsoleRedirection FileRetentionCount="5" FileMaxSizeInKb="2048"  
  18. /> 
  19. </ExeHost> 
  20. </EntryPoint> 
  21. </CodePackage> 
  22. <ConfigPackage Name="Config" Version="1.0.0" /> 
  23. <Resources> 
  24. <Endpoints> 
  25. <Endpoint Name="NodeJSServiceTypeEndpoint" UriScheme="http" Port="  
  26. 3000" Protocol="http" Type="Input"/> 
  27. </Endpoints> 
  28. </Resources> 
  29. </ServiceManifest> 

整个配置中主要包含以下信息:

(1) 定义服务类型的名称和种类,Service Fabric 将以服务类型的名称来识别不同的服务;

(2) 定义启动服务的命令和程序(ExeHost);

(3) 设置启动应用程序前的设置脚本(SetupEntrypoint);

(4) 定义服务所使用的配置文件和资源(Config 和Resources)。

接下来,以Service Manifest 为例,详细介绍一下各个配置的具体用法。

定义Service Type:

  1. <ServiceTypes> 
  2. <StatelessServiceType ServiceTypeName="NodeJSServiceType" UseImplicitHost 
  3. ="true" /> 
  4. </ServiceTypes> 

定义服务类型和名称。来宾可执行应用程序都是使用StatelessServiceType,所以这里需要选择该类型,之后使用ServiceTypeName 定义服务的名称。请注意,在ApplicationManifest 中也会使用该名称来定位到该服务。UseImplicitHost 属性则是用来告知ServiceFabric 该服务是否为独立的应用程序。设置为True,则是独立的应用,这样Service Fabric就会以进程的形式启动该应用,并监控进程的运行情况。

定义Code Package:

  1. <CodePackage Name="Code" Version="1.0.0"> 
  2. <EntryPoint> 
  3. <ExeHost> 
  4. <Program>node.exe</Program> 
  5. <Arguments>App.js</Arguments> 
  6. <WorkingFolder>CodePackage</WorkingFolder> 
  7. <ConsoleRedirection FileRetentionCount= " 5 " FileMaxSizeInKb= "  
  8. 2048"/> 
  9. </ExeHost> 
  10. </EntryPoint> 
  11. </CodePackage> 

在CodePackage 中主要包含SetupEntryPoint,EntryPoint 和EnvironmentVariables 三部分。在之前的应用模型章节中已详细介绍了该部分设置。在来宾可执行程序中,主要是使用EntryPoint 部分来设置启动服务的入口,以启动NodeJS 的应用示例,在Program 节点指定该服务的可执行程序为node.exe,当发布应用后,Service Fabric 会依据该值查找CodePackage 目录下的该程序启动并执行,该应用程序的参数值将被设置在 Arguments 的节点下。WorkingFolder 用来指定服务进程的工作目录,在应用和初始化脚本中可以依据该目录使用相对目录来定位文件,这个设置的值可以有三个选项,Code Base,Code Package,Work。其中Code Base 对应示例中的NodeJSServicePkg 文件夹下的Code 目录,Code Package 对应NodeJSServicePkg 目录。而Work 会将文件放置到名为Work 的子文件夹中。

ConsoleRedirection 可以将执行应用程序中的Console 输出写入到文件中。日志文件会保存到WorkingFolder 下,该配置属性可以调整日志文件大小和数量。请注意,该项配置仅用于开发测试调试使用,不推荐在生产环境中配置。

定义Naming Service 交互使用的端口:

  1. <Endpoints> 
  2. <Endpoint Name= " NodeJSServiceTypeEndpoint " UriScheme= " http "  
  3. Port= "3000" Protocol="http" Type="Input"/> 
  4. </Endpoints> 

定义服务监听的端口信息,并注册到Naming Service,这样可以方便其他服务发现和调用访问该服务。类似示例中的配置,可以使用http://localhost:3000 来访问,当然也可以使用内网IP 或者公网IP 来访问。如果使用公网IP 访问,还需要设置负载均衡规则,后面会详细介绍。在此也可以设置pathSuffix,这样可以向同一个端口发布pathSuffix 的多个不同服务,设置的方法如下:

  1. <Endpoints> 
  2. <Endpoint Name= " NodeJSServiceTypeEndpoint " UriScheme= " http "  
  3. Port= "3000" Protocol="http" Type="Input" PathSuffix="myApp/"/> 
  4. </Endpoints> 

这样就可以使用http://localhost:3000/myApp/ 访问该服务。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

非常网管——网络服务

本书使用通俗易懂的语言,通过大量的实例,从实际应用的角度出发,全面系统地介绍了网络服务操作系统平台、电子邮件系统、Web站点和FTP站点...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊