美文网首页
skynet教程(3)--服务的别名

skynet教程(3)--服务的别名

作者: 天一阁图书管理员 | 来源:发表于2017-09-02 11:15 被阅读329次

    作者:shihuaping0918@163.com,转载请注明作者

    skynet是由服务组成的,为了解决服务间调用时,服务地址的获取问题,skynet可以给服务起一个别名,这个别名是字符串。并提供了queryservice函数,queryservice可以根据名字查询到服务,获取服务的地址。服务的名字必须是唯一的,不可重复的。服务的地址是运行时唯一的,但名字是永远唯一的。这样也能解决集群通信时,有多台机器,每台机器跑不同的服务,但有一台机器上的服务宕机了,重启以后,服务的地址发生变化,其它机器调用也不受影响。

    以下是几个写服务时经常要用到的函数。

    newservice(name, ...) 启动一个名为 name 的新服务。
    uniqueservice(name, ...) 启动一个唯一服务,如果服务该服务已经启动,则返回已启动的服务地址。
    queryservice(name) 查询一个由 uniqueservice 启动的唯一服务的地址,若该服务尚未启动则等待。
    localname(name) 返回同一进程内,用 register 注册的具名服务的地址。
    

    newservice可以在一个进程里启动多个服务,这适用于无状态的服务。
    uniqueservice则是类似于设计模式中的单件(singleton),这适用于需要唯一性的服务。举个例子,比如写日志,只想写一份。或者是全局共享的数据。

    服务的别名在第1篇里其实已经用到过了,就是用register函数注册服务的名字。下一篇将会有一个例子演示这些函数的使用。

    如果觉得这篇文章对您有所帮助,请点赞或者赏杯咖啡吧。

    相关文章

      网友评论

          本文标题:skynet教程(3)--服务的别名

          本文链接:https://www.haomeiwen.com/subject/mzjidxtx.html