国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微服務SpringBoot+Neo4j搭建企業(yè)級分布式應用拓撲圖

這篇具有很好參考價值的文章主要介紹了微服務SpringBoot+Neo4j搭建企業(yè)級分布式應用拓撲圖。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

neo4j+spring,原力計劃,neo4j,微服務,spring boot,可視化,分布式


上一篇文章中我們介紹了 《【云原生專題】基于Docker+Neo4j圖數(shù)據(jù)庫搭建企業(yè)級分布式應用拓撲圖》,但是只介紹了使用Cypher語言在Neo4j的瀏覽器中執(zhí)行增刪查改的操作,現(xiàn)在我們想要基于SpringBoot來實現(xiàn)代碼層面的增刪查改。

一、環(huán)境搭建

最便捷的方式就是訪問start.spring.io,新建一個項目,選擇的依賴有:

  • spring-boot-starter-data-neo4j
  • spring-boot-starter-web
  • lombok

然后JDK需要選擇11版本,因為我們當前使用的Neo4j版本是4.4.7,可以在Neo4j的瀏覽器中左下角“About Neo4j”中看到使用的版本號,其對應需要支持的JDK版本可以在官網(wǎng)中查到:

1. JDK 11
Neo4j 4.0 is the first major release that requires JDK 11. Custom extensions and procedures can be compiled now for JDK 11, for example, -target 11. It is generally recommended to use the latest available JDK 11 to access all available fixes and performance improvements.

如果本地Neo4j是通過Docker鏡像安裝的,我們可以進入鏡像內(nèi)部,使用命令查看Neo4j運行的Java版本信息:

# java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment 18.9 (build 11.0.15+10)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+10, mixed mode, sharing)

如果不是通過Docker鏡像安裝的,那么本地就需要自行安裝JDK11了,同樣的,在運行如上我們下載的SpringBoot工程時,同樣需要選擇項目基于的JDK版本為11,然后才能正常運行。

二、Neo4jRepository介紹

Neo4jRepository是SpringData為我們提供的用來操作Neo4j數(shù)據(jù)庫的接口,我們先來看看它的繼承關系:

neo4j+spring,原力計劃,neo4j,微服務,spring boot,可視化,分布式

Neo4jRepository的繼承關系

可以看到,通用的增刪查改功能基本都有了,如果我們的數(shù)據(jù)庫操作也是些簡單的操作,那基本就不用再添加方法了,直接使用Neo4jRepository提供的方法即可。當然也支持我們自定義方法進行操作,這個下面再信息講述。

三、代碼演示

這里的代碼示例,只是展示系統(tǒng)節(jié)點的增加、相互之間關系的創(chuàng)建,其它增刪查改操作,可以自行摸索學習。

@Slf4j
@RestController
public class SystemController {
    @Autowired
    private SystemService systemService;
    
    public static final String SUCCESS_RESULT = "success";

    @GetMapping("/getAllSystemNode")
    public List<SystemEntity> getAllSystemNode(){
        return systemService.getAllSystemNode();
    }

    @GetMapping("/findSystemById/{id}")
    public SystemEntity findSystemById(@PathVariable("id") Long id){
        SystemEntity result = systemService.findSystemById(id);
        log.info("{}", result);
        return result;
    }

    @PostMapping("/addSystemNode")
    public String addSystemNode(@RequestBody SystemEntity systemEntity){
        systemService.addSystemNode(systemEntity);
        return SUCCESS_RESULT;
    }

    @GetMapping("addInvokeRelation/{from}/{to}")
    public String addInvokeRelation(@PathVariable("from") Long from, @PathVariable("to") Long to){
        systemService.addInvokeRelation(from, to);
        return SUCCESS_RESULT;
    }

    @GetMapping("addConsumeRelation/{from}/{to}")
    public String addConsumeRelation(@PathVariable("from") Long from, @PathVariable("to") Long to){
        systemService.addConsumeRelation(from, to);
        return SUCCESS_RESULT;
    }

    @GetMapping("addProduceRelation/{from}/{to}")
    public String addProduceRelation(@PathVariable("from") Long from, @PathVariable("to") Long to){
        systemService.addProduceRelation(from, to);
        return SUCCESS_RESULT;
    }
}
@Slf4j
@Service
public class SystemService {
    @Resource
    private SystemRepository systemRepository;

    public List<SystemEntity> getAllSystemNode(){
        List<SystemEntity> systemEntityList = systemRepository.findAll();
        log.info("查詢所有的節(jié)點為:{}", systemEntityList);
        return systemEntityList;
    }

    public void addSystemNode(SystemEntity systemEntity){
        SystemEntity result = systemRepository.save(systemEntity);
        log.info("添加節(jié)點后的返回結果為:{}", result);
    }

    public void addInvokeRelation(Long from, Long to){
        systemRepository.addInvokeRelation(from, to);
    }

    public void addConsumeRelation(Long from, Long to){
        systemRepository.addConsumeRelation(from, to);
    }

    public void addProduceRelation(Long from, Long to){
        systemRepository.addProduceRelation(from, to);
    }

    public SystemEntity findSystemById(Long id){
        return systemRepository.findSystemById(id);
    }
}
/**
 * Neo4jRepository<T, ID>
 * T表示節(jié)點類,ID表示主鍵類型
 */
public interface SystemRepository extends Neo4jRepository<SystemEntity, Long> {

    @Query("MATCH (a),(b) WHERE id(a)=$from and id(b)=$to MERGE (a)-[:invoke]->(b)")
    void addInvokeRelation(@Param("from") Long from, @Param("to") Long to);

    @Query("MATCH (a),(b) WHERE id(a)=$from and id(b)=$to MERGE (a)-[:consume]->(b)")
    void addConsumeRelation(@Param("from") Long from, @Param("to") Long to);

    @Query("MATCH (a),(b) WHERE id(a)=$from and id(b)=$to MERGE (a)-[:produce]->(b)")
    void addProduceRelation(@Param("from") Long from, @Param("to") Long to);

    /**
     * 使用節(jié)點id時只能用id(n)這種寫法,其它屬性可以用n.name這樣的寫法
     * @param id
     * @return
     */
    @Query("MATCH (n) where id(n)=$id RETURN n")
    SystemEntity findSystemById(@Param("id") Long id);

    //等價寫法@Query("MATCH (n:SystemEntity {leader: $leader}) RETURN n")
    @Query("MATCH (n) where n.leader=$leader RETURN n")
    SystemEntity findSystemByLeader(@Param("leader") String leader);

}

然后,運行如上SpringBoot項目后,我們按照上一篇文章中的示例,依次增加系統(tǒng)節(jié)點和關系之后,可以得到圖如下:

neo4j+spring,原力計劃,neo4j,微服務,spring boot,可視化,分布式

實現(xiàn)的系統(tǒng)架構可視化圖

該例子和上一篇例子稍微有些不同,此處所有系統(tǒng)節(jié)點的類型都設置為了System,所以同一類型的節(jié)點顏色都是相同的。

四、待解決問題

可能是由于自己Cypher語言不熟悉,很多CRUD語句用的還不順暢,比如為什么用到id時,不能使用n.id的寫法,還有SystemRepository中調(diào)用關系的類型如何參數(shù)化,這樣就不用為每一種調(diào)用關系創(chuàng)建方法了,如果有知道的朋友可以告知下文章來源地址http://www.zghlxwxcb.cn/news/detail-782804.html

到了這里,關于微服務SpringBoot+Neo4j搭建企業(yè)級分布式應用拓撲圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 圖數(shù)據(jù)庫Neo4j——SpringBoot使用Neo4j & 簡單增刪改查 & 復雜查詢初步

    圖數(shù)據(jù)庫Neo4j——SpringBoot使用Neo4j & 簡單增刪改查 & 復雜查詢初步

    圖形數(shù)據(jù)庫是專門用于存儲圖形數(shù)據(jù)的數(shù)據(jù)庫,它使用圖形模型來存儲數(shù)據(jù),并且支持復雜的圖形查詢。常見的圖形數(shù)據(jù)庫有Neo4j、OrientDB等。 Neo4j是用Java實現(xiàn)的開源NoSQL圖數(shù)據(jù)庫,本篇博客介紹如何在SpringBoot中使用Neo4j圖數(shù)據(jù)庫,如何進行簡單的增刪改查,以及如何進行復雜

    2024年02月06日
    瀏覽(33)
  • SpringBoot整合Neo4j

    Neo4j是一個高性能的,NOSQL圖形數(shù)據(jù)庫,它的內(nèi)部就是一個高性能的圖形引擎,專門為應用程序提供嵌入式,磁盤的高性能存儲和遍歷圖形結構的能力。Spring Boot是一個旨在簡化創(chuàng)建獨立的,生產(chǎn)級別的Spring基礎應用程序的開發(fā)框架。在本文中,我們將探討如何在Spring Boot項目

    2024年02月06日
    瀏覽(22)
  • springboot整合neo4j模糊查詢

    1.場景 查詢與content相似的實體 解決方案: 1.直接從neo4j中查詢所有實體并使用杰卡德相似度算法計算相似度,返回top n,該方案由于要匹配圖中所有實體,性能較差。 2.模糊查詢neo4j中的實體,并對查詢結果與content做相似度計算,相似度算法為hutool中的TextSimilarity.similar()接口

    2024年02月13日
    瀏覽(23)
  • 【Springboot集成Neo4j完整版教程】

    【Springboot集成Neo4j完整版教程】

    ?? Neo4j ?? ?? 算法刷題專欄 | 面試必備算法 | 面試高頻算法 ?? ?? 越難的東西,越要努力堅持,因為它具有很高的價值,算法就是這樣? ?? 作者簡介:碩風和煒,CSDN-Java領域優(yōu)質創(chuàng)作者??,保研|國家獎學金|高中學習JAVA|大學完善JAVA開發(fā)技術棧|面試刷題|面經(jīng)八股文|經(jīng)驗

    2024年02月10日
    瀏覽(23)
  • springboot整合neo4j-使用原生cypher

    該文的實現(xiàn)有更簡單的方式,詳見我的另一篇博客springboot整合neo4j–采用Neo4jClient和Neo4jTemplate方式 Neo4j 提供 JAVA API 以編程方式執(zhí)行所有數(shù)據(jù)庫操作。它支持三種類型的API: 1、Neo4j 原生的 Java API 原生 Java API 是一種低級別的純 JAVA API,用于執(zhí)行數(shù)據(jù)庫操作。 2、Neo4j Cypher Jav

    2024年02月12日
    瀏覽(24)
  • Springboot整合Neo4J圖數(shù)據(jù)庫

    1.引入依賴 JDK11, neo4J4.4.23 2.解決springboot與neo4j兼容問題

    2024年02月09日
    瀏覽(27)
  • Springboot項目連接neo4j數(shù)據(jù)庫

    首先創(chuàng)建一個springboot項目,這里不再介紹。 連接 neo4j 數(shù)據(jù)庫的依賴包 spring-boot-starter-data-neo4j依賴包 mybatis-plus依賴包

    2024年02月12日
    瀏覽(23)
  • 圖數(shù)據(jù)庫_Neo4j和SpringBoot整合使用_實戰(zhàn)創(chuàng)建明星關系圖譜---Neo4j圖數(shù)據(jù)庫工作筆記0010

    2023-09-10 10:37:48 補充 注意:下面是舊版本的語法,如果你發(fā)現(xiàn)@NodeEntity這樣的注解沒有的話可以這樣: 這里就要用@Node 另外如果@StartNode和@EndNode都沒有了,那么說明是用法變了. 關于最新的用法,在官網(wǎng)有明確的說明和案例,很有用: 下面給出官網(wǎng)的案例:

    2024年02月12日
    瀏覽(23)
  • Springboot集成neo4j實現(xiàn)知識圖譜關系圖

    Springboot集成neo4j實現(xiàn)知識圖譜關系圖

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 使用neo4j來完成人員關系 公司項目有一個功能需要將各個人員關系列出,在參加評選的時候,進行展示和篩選 neo4j是高性能的NOSQL圖形數(shù)據(jù)庫,在neo4j中,社區(qū)版本只能使用一個database。在neo4j中不存在表的

    2024年02月02日
    瀏覽(19)
  • Neo4J 特性CQL語句,函數(shù),Springboot集成

    Neo4J 特性CQL語句,函數(shù),Springboot集成

    ??隨著社交、電商、金融、零售、物聯(lián)網(wǎng)等行業(yè)的快速發(fā)展,現(xiàn)實社會織起了了一張龐大而復雜的關系 網(wǎng),傳統(tǒng)數(shù)據(jù)庫很難處理關系運算。大數(shù)據(jù)行業(yè)需要處理的數(shù)據(jù)之間的關系隨數(shù)據(jù)量呈幾何級數(shù)增長, 急需一種支持海量復雜數(shù)據(jù)關系運算的數(shù)據(jù)庫,圖數(shù)據(jù)庫應運而生

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包