string(14) "127.0.0.1:9200" URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [text] => Array
                        (
                            [query] => 微服务架构下代码管理规范
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 0
)
RESPONSE:
string(7946) "{"took":46,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":46.039806,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"59149","_score":46.039806,"_source":{"id":"59149","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u4ee3\u7801\u7ba1\u7406\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"pengteng","tagsname":"","tagsid":"[]","catesname":"\u5fae\u670d\u52a1","catesid":"[\"1527\"]","createtime":"1558783903"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em##em#代#/em##em#码#/em##em#管#/em##em#理#/em##em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"58062","_score":39.07775,"_source":{"id":"58062","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u6587\u6863\u7ba1\u7406\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"pengteng","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637106680"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em#文档#em#管#/em##em#理#/em##em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"58222","_score":39.07775,"_source":{"id":"58222","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u7ec4\u4ef6\u7ba1\u7406\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"pengteng","tagsname":"","tagsid":"[]","catesname":"\u5fae\u670d\u52a1","catesid":"[\"1527\"]","createtime":"1558161536"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em#组件#em#管#/em##em#理#/em##em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"58310","_score":39.07775,"_source":{"id":"58310","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u4ecb\u8d28\u7ba1\u7406\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"pengteng","tagsname":"","tagsid":"[]","catesname":"\u5fae\u670d\u52a1","catesid":"[\"1527\"]","createtime":"1558242335"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em#介质#em#管#/em##em#理#/em##em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"968385","_score":37.32017,"_source":{"id":"968385","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"wintersun","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1639829184"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em##em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"91332","_score":28.248222,"_source":{"id":"91332","text":".netcore 3.1\u9ad8\u6027\u80fd\u5fae\u670d\u52a1\u67b6\u6784\uff1awebapi\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"puzi0315","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1635329197"},"highlight":{"text":[".netcore 3.1高性能#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em#:webapi#em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203407456","_score":28.207695,"_source":{"id":"203407456","text":"Apollo:\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u7684\u914d\u7f6e\u7ba1\u7406","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1639127176"},"highlight":{"text":["Apollo:#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em#的配置#em#管#/em##em#理#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"70986","_score":27.828339,"_source":{"id":"70986","text":"\u5fae\u670d\u52a1\u4e4b\u67b6\u6784\u5373\u7ba1\u7406","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"lxz-blog","tagsname":"","tagsid":"[]","catesname":"","catesid":"[]","createtime":"1566902909"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em#之#em#架#/em##em#构#/em#即#em#管#/em##em#理#/em#"]}}]}}"
string(14) "127.0.0.1:9200" URL: http://127.0.0.1:9200/likecs_art_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [text] => Array
                        (
                            [query] => 微服务架构下代码管理规范
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [text] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 8
    [from] => 8
)
RESPONSE:
string(8046) "{"took":47,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":46.039806,"hits":[{"_index":"likecs_art_db","_type":"_doc","_id":"62364","_score":27.660772,"_source":{"id":"62364","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e4b\u300c \u4e0b\u4e00\u4ee3\u5fae\u670d\u52a1 Service Mesh \u300d","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"jsjwk","tagsname":"","tagsid":"[]","catesname":"","catesid":"[]","createtime":"1561522093"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em#之「 #em#下#/em#一#em#代#/em##em#微#/em##em#服#/em##em#务#/em# Service Mesh 」"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"1020930","_score":27.559198,"_source":{"id":"1020930","text":"\u5fae\u670d\u52a1\u67b6\u6784 | 2. \u670d\u52a1\u914d\u7f6e\u7ba1\u7406","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"dlhjw","tagsname":"","tagsid":"[]","catesname":"\u5b66\u4e60\u7b14\u8bb0|Spring \u5fae\u670d\u52a1\u5b9e\u8df5\u5b66\u4e60\u7b14\u8bb0","catesid":"[\"141\",\"12945\"]","createtime":"1641947443"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em# | 2. #em#服#/em##em#务#/em#配置#em#管#/em##em#理#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203407458","_score":27.298567,"_source":{"id":"203407458","text":"\u5fae\u670d\u52a1\u67b6\u6784\u4e0b\u7684\u5206\u5e03\u5f0fSession\u7ba1\u7406","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1632563162"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em##em#下#/em#的分布式Session#em#管#/em##em#理#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203314411","_score":27.104065,"_source":{"id":"203314411","text":"\u4e0b\u4e00\u4ee3\u5fae\u670d\u52a1\u67b6\u6784\u2014\u2014Service Mesh","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1634705506"},"highlight":{"text":["#em#下#/em#一#em#代#/em##em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em#——Service Mesh"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"203314418","_score":27.104065,"_source":{"id":"203314418","text":"\u4e0b\u4e00\u4ee3\u5fae\u670d\u52a1\u67b6\u6784Service Mesh","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1623007554"},"highlight":{"text":["#em#下#/em#一#em#代#/em##em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em#Service Mesh"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"853241","_score":26.412199,"_source":{"id":"853241","text":"\u670d\u52a1\u7aef\u7ec4\u4ef6C++\u4ee3\u7801\u89c4\u8303","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"sunmeng1994","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1637630136"},"highlight":{"text":["#em#服#/em##em#务#/em#端组件C++#em#代#/em##em#码#/em##em#规#/em##em#范#/em#"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"754480","_score":25.990242,"_source":{"id":"754480","text":"\u5fae\u670d\u52a1\u67b6\u6784 - \u670d\u52a1\u5668\u8d44\u6e90\u89c4\u5212","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"wangwangfei","tagsname":"","tagsid":"","catesname":null,"catesid":"","createtime":"1636568439"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em# - #em#服#/em##em#务#/em#器资源#em#规#/em#划"]}},{"_index":"likecs_art_db","_type":"_doc","_id":"157648","_score":25.446709,"_source":{"id":"157648","text":"\u5fae\u670d\u52a1\u7406\u8bba\u4e4b\u4e94\uff1a\u5fae\u670d\u52a1\u67b6\u6784 vs. SOA\u67b6\u6784","intro":"\u76ee\u5f55\n\nECharts\n\u5f02\u6b65\u52a0\u8f7d\n\n\n\nECharts\r\n\u6570\u636e\u53ef\u89c6\u5316\u5728\u8fc7\u53bb\u51e0\u5e74\u4e2d\u53d6\u5f97\u4e86\u5de8\u5927\u8fdb\u5c55\u3002\u5f00\u53d1\u4eba\u5458\u5bf9\u53ef\u89c6\u5316\u4ea7\u54c1\u7684\u671f\u671b\u4e0d\u518d\u662f\u7b80\u5355\u7684\u56fe\u8868\u521b\u5efa\u5de5\u5177\uff0c\u800c\u662f\u5728\u4ea4\u4e92\u3001\u6027\u80fd\u3001\u6570\u636e\u5904\u7406\u7b49\u65b9\u9762\u6709\u66f4\u9ad8\u7684\u8981\u6c42\u3002\r\nchart.setOption({\r\n    color: [\r\n        ","username":"duanxz","tagsname":null,"tagsid":"","catesname":null,"catesid":"","createtime":"1640196852"},"highlight":{"text":["#em#微#/em##em#服#/em##em#务#/em##em#理#/em#论之五:#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em# vs. SOA#em#架#/em##em#构#/em#"]}}]}}"
string(14) "127.0.0.1:9200" URL: http://192.168.101.128/searchcore/index.php/cihere_cn_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [match] => Array
                (
                    [title] => Array
                        (
                            [query] => 微服务架构下代码管理规范
                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [from] => 0
)
RESPONSE:
bool(false)
string(14) "127.0.0.1:9200" URL: http://127.0.0.1:9200/likecs_down_db/_search
REQUEST:
Array
(
    [query] => Array
        (
            [bool] => Array
                (
                    [must] => Array
                        (
                            [0] => Array
                                (
                                    [match] => Array
                                        (
                                            [title] => Array
                                                (
                                                    [query] => 微服务架构下代码管理规范
                                                )

                                        )

                                )

                        )

                    [must_not] => Array
                        (
                            [0] => Array
                                (
                                    [term] => Array
                                        (
                                            [cate1] => 电子书籍
                                        )

                                )

                        )

                )

        )

    [highlight] => Array
        (
            [fields] => Array
                (
                    [title] => stdClass Object
                        (
                        )

                )

            [pre_tags] => #em#
            [post_tags] => #/em#
        )

    [size] => 5
    [from] => 0
)
RESPONSE:
string(2884) "{"took":14,"timed_out":false,"_shards":{"total":1,"successful":1,"skipped":0,"failed":0},"hits":{"total":{"value":10000,"relation":"gte"},"max_score":26.47432,"hits":[{"_index":"likecs_down_db","_type":"_doc","_id":"68995","_score":26.47432,"_source":{"id":"68995","title":"SpringBlade \u5206\u5e03\u5f0f\u5fae\u670d\u52a1\u67b6\u6784 v3.0.3","spidertime":"1623080623","contenttime":"1679003401","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/201216\/164Z6101215.gif","tag":"\u67b6\u6784|\u5fae\u670d\u52a1|\u5206\u5e03\u5f0f|SpringBlade","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u8f6f\u4ef6\u5f00\u53d1","cate3":"java\u6e90\u7801","attr1":"5.2MB"},"highlight":{"title":["SpringBlade 分布式#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em# v3.0.3"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"10531","_score":26.47432,"_source":{"id":"10531","title":"SpringBlade \u5206\u5e03\u5f0f\u5fae\u670d\u52a1\u67b6\u6784 v3.0.3","spidertime":"1622877663","contenttime":"1675476262","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/201216\/164Z6101215.gif","tag":"\u67b6\u6784|\u5fae\u670d\u52a1|\u5206\u5e03\u5f0f|SpringBlade","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u8f6f\u4ef6\u5f00\u53d1","cate3":"java\u6e90\u7801","attr1":"5.2MB"},"highlight":{"title":["SpringBlade 分布式#em#微#/em##em#服#/em##em#务#/em##em#架#/em##em#构#/em# v3.0.3"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"57345","_score":24.020721,"_source":{"id":"57345","title":"Jupiter\u5fae\u670d\u52a1\u6846\u67b6 v0.2.9","spidertime":"1623063771","contenttime":"1624639968","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/200817\/1F43610P92.gif","tag":"\u6846\u67b6|\u5fae\u670d\u52a1|Jupiter","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u5176\u5b83\u6e90\u7801","attr1":"1.2MB"},"highlight":{"title":["Jupiter#em#微#/em##em#服#/em##em#务#/em#框#em#架#/em# v0.2.9"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"57500","_score":24.020721,"_source":{"id":"57500","title":"Jboot\u5fae\u670d\u52a1\u6846\u67b6 v3.9.13","spidertime":"1623064076","contenttime":"1624650796","tag":"jboot|\u5fae\u670d\u52a1|\u6846\u67b6","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u8f6f\u4ef6\u5f00\u53d1","cate3":"java\u6e90\u7801","attr1":"3.28MB"},"highlight":{"title":["Jboot#em#微#/em##em#服#/em##em#务#/em#框#em#架#/em# v3.9.13"]}},{"_index":"likecs_down_db","_type":"_doc","_id":"731","_score":24.020721,"_source":{"id":"731","title":"Jupiter\u5fae\u670d\u52a1\u6846\u67b6 v0.2.9","spidertime":"1622860205","contenttime":"1622860205","pageimage":"https:\/\/img.jbzj.com\/do\/uploads\/litimg\/200817\/1F43610P92.gif","tag":"\u6846\u67b6|\u5fae\u670d\u52a1|Jupiter","cate1":"\u6e90\u7801\u4e0b\u8f7d","cate2":"\u5176\u5b83\u6e90\u7801","attr1":"1.2MB"},"highlight":{"title":["Jupiter#em#微#/em##em#服#/em##em#务#/em#框#em#架#/em# v0.2.9"]}}]}}"
微服务架构下代码管理规范 - 爱码网
pengteng

  当下对于代码的管理,主要采用GitLab或GitHub,然而使用git进行代码管理过程中,一般有四种开发模式,分别为主干开发主干发布,主干开发分支发布,分支开发主干发布,分支开发分支发布。四种开发模式各有特色,下面将从针对四种开发模式进行一一说明。

  但是针对微服务体系下,代码的管理,一般建议采用分支开发主干发布。

1. 代码管理模式

1.1.  主干开发+主干发布模式

  

   模式特点:所有的操作都在主干上进行操作,随着时间的演进,代码只有一个版本,任何修改,均体现在主干上面,开发过程比较简单。

  操作权限:该种模式对于开发人员与项目经理等在代码提交方面,权限相同;

  适用场景:该种模式适用于团队规模较小,业务模型明确,且人员技能较高的开发团队。

1.2.  主干开发+分支发布模式

  

   模式特点:所有的操作都在主干上进行操作,随着时间的演进,代码具有多个版本,运行多个版本可并行提供服务。

  操作权限:该种模式对于开发人员与项目经理等在代码提交方面,权限相同;

  适用场景:该种模式适用于多版本并存,但只维护一个版本的产品,其他版本不进行维护的项目,该种场景较少。

1.3.  分支开发+主干发布模式 

  

   模式特点:所有的代码提交都在分支上操作,随着时间的演进,需要构建Release版本时,需要将代码提交到主干上面,平常开发都是在分支上进行,好处可保证主干代码始终可用。

  操作权限:该种方式开发人员只具有开发分支权限,无master权限,代码的merge只能由项目经理或有权人完成;

  适用场景:该种模式适用于多功能并行开发,按照业务特性或模块进行在分支进行开发,然后在进行合并后进行Release构建发布,业务场景较复杂,且人员素质层次不齐,需要代码review。

1.4.  分支开发+分支发布模式 

  

   模式特点:所有的代码提交都在分支上操作,随着时间的演进,需要构建Release版本时,也是直接在分支上进行构建,各分支独立演进,与主分支关系不大,是主干开发主干发布的一个组合使用。

  操作权限:该种方式开发人员与项目经理一样,只具有分支上的操作权限,不具有master权限。

  适用场景:该模式适用于需求群/项目群的方式进行开发,大家公用同一个代码库,然后共享部门基础代码,然后各分支独立进行演进。

2. 代码管理规范

  无规矩不成方圆,微服务架构下,代码的管理一般采用git进行管控,因此,在使用git进行版本控制时,应遵循一些原则及规范。

2.1.  代码管理原则

  代码管理的原则,用于确保代码管理过程中不出现原则性错误,出现原则性错误,则会出现许多无用的操作,基本原则如下:

  • 模式确实后,必须严格遵循执行;
  • 提交代码时,禁止代码强制提交;
  • 代码提交时,必须进行注释说明;
  • 代码提交时,必须按照规范执行;
  • 出现冲突时,必须进行确认处理;

2.2.  代码管理规范

  由于微服务一般建议采用分支开发主干发布,因此,本规范主要针对分支开发主干发布模式,具体规范如下:

  • 原则上代码的开发提交,必须通过创建分支进行开发,特殊情况除外(bug),review同事有责任进行检查其他同事是否遵循分支规范;
  • 代码提交前,必须先进行更新代码(git pull),对于有冲突的文件,必须要进行对比,确认素有修改都是自己修改的,然后在进行提交,防止代码回溯(即别人的代码被覆盖);
  • review同事遇到代码删除情况,必须与开发确认,是否为开发同事自己删除,如果不是,很可能就是代码回溯;
  • 在代码开发阶段,代码的提交尽量独立化,也就是功能模块尽量细分,每个开发负责一个模块,尽量不要修改其他成员模块代码;
  • 多人协作时,需要创建一个远程分支,然后一起在远程分支里协作开发,防止代码回溯。禁止各自开发,然后线下发送文件合并;
  • 代码提交前,必须进行git pull,且进行git diff进行比对代码,确保提交代码为自己修改内容,防止出现代码回溯;
  • 代码出现冲突时,必须 要与冲突代码提交者进行确认冲突内容,双方确认无误方可处理;
  • 主分支(master)为生产环境分支,除特殊情况(修复bug),禁止在master分支上进行开发;
  • 代码提交时,必须描述清楚做了什么,提交动作有add、update、remove,提交格式为[动作]+[操作的模块信息,尽量详细到具体的类名方法名]+[操作描述信息],例如:git commit –m ‘update aa.java findByName 将精确查询修改为模糊查询’,每次提交尽量一个动作,多个动作请多次提交;
  • 在git中,默认空目录不会提交,如果某个空目录想提交到版本库,需要在该目录下新建一个deleteme.txt的空白文件;
  • 开发分支(developer)为开发分支,一般作为主要的代码提交分支;
  • 修复分支为修复bug分支,命名格式为bugfix-{date},修复分支用于主要分支的bug修复工作;
  • 功能分支为新增功能分支,命名格式为feature-{message},可合并到developer分支;
  • 其他分支,为特殊情况建立的分支,命名应带有分支相关信息;

相关文章:

  • 2019-06-26
  • 2022-01-12
  • 2021-09-25
  • 2021-10-20
  • 2021-06-07
  • 2021-11-23
  • 2021-11-11
  • 2021-12-23
猜你喜欢
  • 2021-11-17
  • 2019-05-18
  • 2019-05-19
  • 2021-12-18
  • 2021-10-27
  • 2021-12-10
  • 2019-08-27
相关资源
相似解决方案