资讯专栏INFORMATION COLUMN

Lagom参考指南(三)

VishKozus / 2569人阅读

摘要:有一些设置和任务可以为您喜欢的嵌入式服务定位器调整,让我们来探索它们默认的端口号在中,服务发现的端口号默认的是但是这个端口是非常容易被其他的应用所占用的。

开发环境下运行Lagom
1.开发环境

Lagom的sbt或者maven项目是可以基于开发的环境允许使用单个命令来运行任意数量的服务。
当代码更改时,同样的命令也会重新加载服务,这样你就不用手动重启了,您可以继续关注您的工作,并让Lagom进行编译和重新加载。
(1)运行Maven中的所有服务
命令很简单,就是 lagom:runAll
如果您有很多服务,或者第一次检索依赖关系,这可能需要一段时间,
(2)热加载
一旦“Services started”消息出现,如果您对源代码进行更改,您将在控制台看到这样的输出:
[info] Compiling 1 Java source to //target/scala-2.11/classes...
--- (RELOAD) ---
(3)我们所看到的背后
当我们运行了runAll命令之后,在背后到底都发生了什么呢??
    >启动了一个嵌入式服务定位器(特别类似于zk或者eureka)
    >启动了一个Cassandra服务器
    >开始了kafka服务器(这个比较热了,mq系列)
    >你的服务开始
        >并向服务定位器注册
这一切都是在没有特殊代码或附加配置的情况下自动发生的。
您可以通过在web浏览器中查看http://localhost:8000 / services来验证您的服务正在运行(或者使用像curl这样的命令行工具),服务定位器,在端口8000上运行,江湖返回类似于如下这样的信息:
    [{"name":"hello-stream","url":"http://0.0.0.0:26230"},
     {"name":"cas_native","url":"tcp://127.0.0.1:4000/cas_native"},
     {"name":"hello","url":"http://0.0.0.0:24266"}]
cas_native是Cassandra服务器,正如您将在编写持久和集群服务的文档中学习的,Cassandra是Lagom的默认数据库,它是开发环境的一个组成部分。
服务为定位器,Cassandra和kafka在接下来的章节中详细讨论。

2.运行服务

就像在上节讲的那样,在构建中定义的所有Lagom服务都可以用单个任务来运行:runAll。执行此任务时,将启动嵌入式服务定位器,一个内嵌的 Cassandra服务器也会随之启动,然后你的所有的服务都会并行的被启动起来。而且,所有启动的服务都将以热重载模式运行。热重新加载意味着服务会自动地重新加载您所做的每一个更改,这样您就不必手动重新启动它们。大多数时候,runAll任务将为您提供良好的服务。然而,有时您可能想手动启动一些服务,这是当run 任务将派上用场的时候。run任务对每个Lagom服务实现项目都可用。
在Maven中,您可以使用Maven项目列表标记来执行特定服务的run任务:
    $ mvn -pl  lagom:run
您应该记住的一点是,run只启动特定的服务,它既不启动服务定位器,也不启动Cassandra服务器。因此,在手动启动服务之前,您可能需要手动启动服务定位器和Cassandra服务器。

3.端口是如何分配给服务的

在检查运行服务列表时,您可能想知道端口是如何分配的。您应该注意到的一点是,端口的分配是一致的,这意味着每个服务将得到分配的相同端口,这是真正有用的,它允许我们来编写测试服务功能的测试脚本,甚至可以与与团队的其他成员共享创建的脚本。即使在不同的机器上,同样的端口也会被确定地选择!注意,这里提醒一下,不是说所有服务使用一个端口,而是lagom使用算法,期间用到了项目名,也就是说,同一个项目。不管啥时候,它端口都是唯一的,算法导致的。
为每个服务分配一个端口的算法如下:
    >这个项目的名称是散列的。
    >哈希绝对值被投影到端口范围(默认的端口范围是[49152,65535])
    >如果没有其他项目声明相同的端口,则指定的端口分配给项目。如果两个或多个项目被投影到同一个端口上,相互冲突的项目是按字母顺序排列的,首先出现的项目将得到分配给它的预期端口。然而,余下的项目将得到最接近的(严格的)可用的临近的端口。
    总之,你不需要去担心这个,与大多数情况一样,端口范围宽到足以使冲突不可能发生。然而,有时您可能仍然倾向于将特定的端口分配给服务(例如,如果自动分配的端口已经在您的系统中使用)您可以手动为项目的服务端口设置提供端口号。
    在Maven中,您可以通过修改服务实现pom配置来实现这一点:
        
            com.lightbend.lagom
            lagom-maven-plugin
            
                11000
            
        
    上文中的算法的描述,在默认端口中,默认端口是[49152,65535]。这也称为短暂的端口范围,IANA为动态端口选择使用了一系列的端口号。如果默认范围不适合您,您可以通过在构建中添加以下内容来更改它。
    pom文件中加入:
        
            com.lightbend.lagom
            lagom-maven-plugin
            ${lagom.version}
            
                
                    40000
                    45000
                
            
        
    在此更改之后,您的服务项目将被分配到一个范围[40000,45000],但是需要注意的是,我们的端口范围的小,带来的是两个服务碰巧是分配同一个端口的可能性就大了。这本身并不是问题(只要所有项目都有足够的端口),但是,在您的构建中添加一个新的服务项目可能会导致对已分配到现有服务项目的端口的更改,如果这两个项目都发生相同的端口。如果您不希望这种情况发生,请确保提供的端口范围足够宽。或者,手动为服务项目分配端口,因为这是有意义的。
    

4.服务定位器(就类似于zk和eureka)

服务定位器嵌入在Lagom的开发环境中,允许服务发现并相互通信。有一些设置和任务可以为您喜欢的嵌入式服务定位器调整,让我们来探索它们:
(1)默认的端口号
在Lagon中,服务发现的端口号默认的是8000,但是这个端口是非常容易被其他的应用所占用的。或者,您可以通过在构建中添加以下内容来告诉服务定位器在10000端口上运行。
在总项目下的pom文件里配置:
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            10000
        
    
(2)与外部的服务进交互
可以在您的构建中定义的Lagom服务和无限数量的外部服务(可以在本地运行或在另一台机器上运行)之间进行通信。您要做的第一件事是在服务定位器中注册每个外部服务。假设我们想要注册一个名为weather的外部服务,它运行在http://localhost:3333中,下面是我们要添加到构建的内容。
在总项目下的pom文件里配置:
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            
                http://localhost:3333
            
        
    
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67082.html

相关文章

  • Lagom参考指南

    摘要:针对您的个人需要,有一些设置和任务可用来调整服务器,让我们来探索它们默认端口号默认情况下,服务器在端口上启动。 开发环境下运行Lagom1.开发环境 Lagom的sbt或者maven项目是可以基于开发的环境允许使用单个命令来运行任意数量的服务。 当代码更改时,同样的命令也会重新加载服务,这样你就不用手动重启了,您可以继续关注您的工作,并让Lagom进行编译和重新加载。 (1)运行Mav...

    lemanli 评论0 收藏0
  • Lagom参考指南(二)

    摘要:允许将反序列化为没有附加注释元数据不可变的类。包的库经常会想支持多个版本的这样做需要构建一个为每个版本的支持工件它介绍了如何区分这些工件的问题看到像不支持添加额外的元数据依赖关系的想法来指定他们需要什么版本的。 1.Defining a Lagom build(定义一个Lagom构建) 正如在Lagom构建哲学中已经讨论过的那样,使用Lagom,您可以自由地将所有服务组合在一个单独的构...

    import. 评论0 收藏0
  • 微服务框架lagom

    摘要:在这种情况下,每一个微服务定义一个限界上下文,类似于领域驱动的限界上下文。设计你的微服务系统的响应式微服务架构这本书对于微服务系统架构很有帮助。 1.Lagom概念介绍 lagom框架包含一系列的可以支持我们从开发到部署的库以及开发环境: >在开发阶段,可以通过一个简单的命令构建我们的项目,启动所有你的服务,并且可以支持所有的lagom基础设置层。当你修改了代码,logom是有热加载的...

    Michael_Lin 评论0 收藏0
  • 前端资源系列(4)-前端学习资源分享&前端面试资源汇总

    摘要:特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 特意对前端学习资源做一个汇总,方便自己学习查阅参考,和好友们共同进步。 本以为自己收藏的站点多,可以很快搞定,没想到一入汇总深似海。还有很多不足&遗漏的地方,欢迎补充。有错误的地方,还请斧正... 托管: welcome to git,欢迎交流,感谢star 有好友反应和斧正,会及时更新,平时业务工作时也会不定期更...

    princekin 评论0 收藏0
  • Bytom矿池接入协议指南

    摘要:比原项目仓库地址地址矿机配置固件升级两个都要刷先后顺序没关系升级时间较长,升级期间请勿断电配置节点测试时可以考虑切换到分支降低难度使挖矿也能出块,或初始化启动时可以加上指定数据目录,若目录不存在则会自动新建该目录流程初始化节点先建 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/Byto...

    CoffeX 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<