国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Lagom參考指南(三)

lemanli / 2163人閱讀

摘要:針對您的個人需要,有一些設置和任務可用來調整服務器,讓我們來探索它們默認端口號默認情況下,服務器在端口上啟動。

開發環境下運行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
            
        
    
上面的內容確保服務定位器知道天氣服務。然后,如果您需要一個Lagom服務來與它進行通信,只需將ServiceLocator進行@inject,并使用它來定位weather服務的URI,或者使用它執行一些任意的工作。
(3)與外部的Lagom項目集成
請注意,如果您想要與之通信的服務實際上是一個Lagom服務,那么您可能想要閱讀有關與外部Lagom項目集成的文檔(就是Lagom參考指南(二)的第二節)。
(4)啟動與停止
當執行runAll任務時,服務定位器會自動啟動。然而,有時您可能想手動啟動一些服務,因此您不會使用runAll任務。這種情況下,您可以通過maven命令行lagon:startServiceLocator手動啟動服務定位器,或者是使用lagom:stopServiceLocator來停掉服務注冊中心。
(5)讓服務定位失效
您可以通過在構建中添加以下內容來禁用嵌入式服務定位器。
在maven項目根路徑下的pom文件:
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            false
        
    
注意,通過禁用服務定位器,您的服務將無法進行通信。恢復通信,您必須在您的服務中提供ServiceLocator的實現。

5.Cassandra Server

默認情況下,需要保存數據的Lagom服務需要使用Cassandra作為數據庫。為了方便起見,我們在開發環境中嵌入了一個Cassandra服務器,這樣您就不必擔心安裝它了。針對您的個人需要,有一些設置和任務可用來調整Cassandra服務器,讓我們來探索它們:
(1)默認端口號
默認情況下,Cassandra服務器在端口4000上啟動。我們知道Cassandra 通常在端口9042上運行,這正是我們選擇不同端口的原因:如果你碰巧有一個的話,我們不想干擾本地運行的Cassandra 。如果當前的默認端口不適合您,例如您希望在端口9042上運行嵌入的Cassandra服務器,那么您可以通過在構建中添加以下內容來實現。
在meven的pom中配置:
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            9042
        
    
 (2)啟動時候進行清理:
     默認情況下,運行服務創建的所有數據庫文件將在下一次啟動Cassandra服務器時刪除。您可以通過在構建中添加以下內容來關閉這個特性
    還是在maven的pom文件里:
        
            com.lightbend.lagom
            lagom-maven-plugin
            ${lagom.version}
            
            
                false
            
        
    (3)秘鑰空間(棄用)
    在Cassandra中的一個keyspace就代表一個名稱空間,它定義節點上的數據復制。每個服務應該使用一個惟一的keyspace名稱,這樣不同服務的表就不會互相沖突。在開發環境中,默認情況下,keyspace將自動設置為項目的名稱(在可能替換了一些不允許的字符之后)。如果生成的密鑰空間不適合您,您可以提供自定義的密鑰空間。
    在Maven中,您可以通過修改服務實現的pom配置來做到這一點:
        
            com.lightbend.lagom
            lagom-maven-plugin
            
                true
                users
            
        
    值得指出的是,盡管上面有一個Cassandra密鑰空間,在運行您的服務時仍然需要提供。因此,如果您想提供可以在開發和生產中使用的Cassandra keyspace名稱,建議通過配置文件這樣做。
    例如:替代掉使用lagomCassandraKeyspace向我們之前那樣使用那樣來設置秘鑰空間,而我們可以通過在項目的application.conf中添加以下附加的鍵/值來獲得相同的結果(注意,如果沒有這個文件,那么你就得手動創建一個,放在/src/main/resources/中),內容如下:
        cassandra-journal.keyspace=users
        cassandra-snapshot-store.keyspace=users
        lagom.persistence.read-side.cassandra.keyspace=users
    項目會使用我們在配置文件application.conf中配置的,而不是使用我們在pom中學的。因此,重寫構建中的keyspace是不贊成的,并且將在后面的Lagom版本中刪除。
    有關配置keyspace的更多信息,請參見Cassandra持久實體配置(原文叫 Cassandra persistent entity configuration)。
(4)JVM選項
    Cassandra服務器在一個多帶帶的進程上運行,而JVM則是由合理的內存默認啟動的。但是,如果默認的JVM選項不適合您,您可以通過在構建中添加以下內容來覆蓋它們。
    在maven父目錄的pom文件里寫:
        
            com.lightbend.lagom
            lagom-maven-plugin
            ${lagom.version}
            
                
                     -Xms256m
                     -Xmx1024m
                     -Dcassandra.jmx.local.port=4099
                     -DCassandraLauncher.configResource=dev-embedded-cassandra.yaml
                 
            
        
    (5)yaml 配置文件
    如上所示,可以通過修改Cassandra JVM選項來配置YAML配置文件,其中包括一個-DCassandraLauncher.configResource系統屬性的值來指向src/main/resource下的某個文件。
    (6)日志
    日志記錄是這樣配置的,它可以達到標準輸出,例如org.apache.cassandra設置為ERROR,下面是logback的設置。
        
        
          
            
              %date{ISO8601} %-5level %logger - %msg%n
            
          
                    
          
            
                       
        
       單數需要注意的是,內嵌的Cassandra服務器是不允許你修改上面的這個配置文件。如果確實你想自定義自己的日志,那么只能自己安裝Cassandra服務器,并閱讀相關的配置介紹(就是下面的第10個小點)進行自定義。
   (7)Cassandra開始時間
       如前所述,runAll會在啟動其他服務之前啟動一個內嵌的Cassandra服務器,而且服務通常只在Cassandra服務器可到達之后才開始。默認情況下,Cassandra服務器將在20秒內啟動并運行,但是您可以通過在構建中添加以下內容來更改這個默認值。
       在maven的pon文件下:
       plugin>
            com.lightbend.lagom
            lagom-maven-plugin
            ${lagom.version}
            
                0
            
        
        設置Cassandra的最大啟動等待時間為0可以模擬真實的部署場景,因為運行的Cassandra實例可能無法在服務啟動時可用
    (8)關閉和啟動
        在執行runAll任務時,將自動啟動Cassandra服務器。在執行runAll任務時,將自動啟動Cassandra服務器。在這種情況下,你可以手動的啟動Cassandra 服務。如果是maven任務,你可以使用lagom:startCassandra來啟動Cassandra 任務,用lagom:stopCassandra 來關閉任務。
    (9)讓Cassandra  Disabled
        你可以通過添加如下的配置來讓內嵌的Cassandra  失效。
        maven的pom文件里:
        
            com.lightbend.lagom
            lagom-maven-plugin
            ${lagom.version}
            
                false
            
        
        如果您需要您的服務連接到一個外部運行的、本地運行的Cassandra實例,那么上面的這些配置可以幫助你。
    (10)連接到本地運行的Cassandra實例
        可以連接到外部運行的Cassandra實例來代替嵌入的Cassandra實例。您所需要做的就是在構建中添加以下內容。
        maven的pom文件中:
        
            com.lightbend.lagom
            lagom-maven-plugin
            ${lagom.version}
            
                
                    http://localhost:9042
                
                false
            
        
        這兩個設置只能在運行Lagom的DevMode時使用。這兩個設置的目的是禁用嵌入式Cassandra服務器,并在DevMode中配置服務定位器,以便在尋找cas_native時仍然能夠找到Cassandra。如果您已經有一個運行在本地或公司基礎設施中的Cassandra服務器,您可能想要禁用它。在這種情況下,Lagom啟動Cassandra服務器是沒有意義的,而且您還會獲得幾秒鐘的啟動時間。
        這些示例中的服務定位器設置假設您的本地Cassandra實例在端口9042上運行。
    

6.kafka服務器

默認情況下,Lagom服務需要使用Kafka作為消息代理與其他人之間共享信息的。在微服務體系結構中,使用message broker對避免耦合服務過于強烈是至關重要的。因此,為了方便,我們在開發環境中嵌入了kafka服務器,這樣您就不必擔心安裝它了。有一些設置和任務可以調整kafka服務器,讓我們來探索它們:
(1)默認端口:
    默認情況下,kafka服務器默認的端口號是9092,kafka使用zk,因此一個zk服務器也在2181端口被啟動起來,如果當前的默認端口不適合您,您可以通過在構建中添加以下內容來更改
    在maven的pom文件下:
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            10000
            9999
        
    
 (2)kafka properties文件
     kafka服務器可配置屬性文件。默認的,我們使用server.properties文件來為kafka提供配置,只有一個更改,允許在服務器上創建主題的自動創建。這是一個很好的默認快速啟動,但是如果你發現自己需要用不同的配置來啟動kafka,用下面的方式,你可以很容易的做到。
     maven的pom文件:
     
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            ${basedir}/kafka-server.properties
        
    
(3)JVM優化
    kafka服務器在一個多帶帶的進程上運行,并且JVM開始時具有合理的內存默認值。但是,如果默認的JVM選項不適合您,您可以通過在構建中添加以下內容來覆蓋它們。
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            
                 -Xms256m
                 -Xmx1024m
             
        
    
(4)日志
    將日志配置為只用于文件。您可以在文件夾中找到kafka的日志,文件目錄的格式為:
    /target/lagom-dynamic-projects/lagom-internal-meta-project-kafka/target/log4j_output
(5)Commit log
    kafka本質上是一個持久的提交日志。您可以發現kafka在文件夾中保存的所有數據。
    /target/lagom-dynamic-projects/lagom-internal-meta-project-kafka/target/logs
(6)Start and stop
    kafka服務器在runAll命令的古時候是會自動啟動的。然而,有時你想手動的啟動幾個服務,不想手動runAlll,這種情況下,不可以通過命令來啟動kafka服務器,maven項目就是用lagom:startKafka,關閉的話就用lagom:stopKafka
(7)讓kafka失效
    您可以通過在構建中添加以下內容來禁用嵌入式Kafka服務器。
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            false
        
    
    禁用嵌入式Kafka服務器的一個很好的理由是,如果您需要您的服務連接到一個外部的Kafka實例。
(8)連接到外部kafka服務器
    可以連接到外部的Kafka服務器來代替嵌入的服務器。您所需要做的就是在構建中添加以下內容。
    maven的pom文件:
    
        com.lightbend.lagom
        lagom-maven-plugin
        ${lagom.version}
        
            localhost:10000
            false
        
    
    您可能已經注意到,上面配置的kafka服務器實際上在本地運行(請注意提供地址中的本地主機)。在這種情況下,它實際上已經足夠配置正在運行的端口,而不必提供完整的地址。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70073.html

相關文章

  • Lagom參考指南

    摘要:有一些設置和任務可以為您喜歡的嵌入式服務定位器調整,讓我們來探索它們默認的端口號在中,服務發現的端口號默認的是但是這個端口是非常容易被其他的應用所占用的。 開發環境下運行Lagom1.開發環境 Lagom的sbt或者maven項目是可以基于開發的環境允許使用單個命令來運行任意數量的服務。 當代碼更改時,同樣的命令也會重新加載服務,這樣你就不用手動重啟了,您可以繼續關注您的工作,并讓La...

    VishKozus 評論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元查看
<