dubbo在项目有啥作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dubbo在项目有啥作用相关的知识,希望对你有一定的参考价值。

参考技术A Dubbo是、阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
(1) 连通性:
注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小
监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示
服务提供者向注册中心注册其提供的服务,并汇报调用时间到监控中心,此时间不包含网络开销
服务消费者向注册中心获取服务提供者地址列表,并根据负载算法直接调用提供者,同时汇报调用时间到监控中心,此时间包含网络开销
注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外
注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者
注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表
注册中心和监控中心都是可选的,服务消费者可以直连服务提供者
(2) 健壮性:
监控中心宕掉不影响使用,只是丢失部分采样数据
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
注册中心对等集群,任意一台宕掉后,将自动切换到另一台
注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者无状态,任意一台宕掉后,不影响使用
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
(3) 伸缩性:
注册中心为对等集群,可动态增加机器部署实例,所有客户端将自动发现新的注册中心
服务提供者无状态,可动态增加机器部署实例,注册中心将推送新的服务提供者信息给消费者

私有设置对 MSBuild 项目文件中的 ProjectReference 有啥作用?

【中文标题】私有设置对 MSBuild 项目文件中的 ProjectReference 有啥作用?【英文标题】:What does the Private setting do on a ProjectReference in a MSBuild project file?私有设置对 MSBuild 项目文件中的 ProjectReference 有什么作用? 【发布时间】:2014-12-02 06:56:27 【问题描述】:

前几天我在一个项目文件中看到了这个:

<ProjectReference Include="Foo\Bar\Baz.csproj">
    <Project>A GUID HERE</Project>
    <Name>Baz</Name>
    <Private>False</Private> <!-- ??? -->
    <ReferenceOutputAssembly>False</ReferenceOutputAssembly>
</ProjectReference>

ProjectReference 中的每个节点似乎都是不言自明的(引用的项目文件、GUID、在解决方案资源管理器中显示的名称,以及当前项目是否应该链接到引用的项目),Private 除外, Common MSBuild Project Items 页面没有记录这个值。 (有一个 Private 设置记录为 Reference 而不是 ProjectReference - 但它有 NeverAlwaysPreserveNewest 设置,不是真假)

这个设置有什么作用?

【问题讨论】:

就 MSBuild 而言,ProjectReference 是一个项目组(即列表),Private 是包含项目的项目元数据。您的问题的答案在于任何包含的内容。更笼统地说,它是什么特定类型的项目?也许用 csharp 标记你的问题。 我的意思是“导入”而不是“包含”。 @malexander:如果您取消删除它,我认为您的回答很好...... @Tom:当然,严格来说是这样。另一方面,ProjectReference 项目(至少)被 C# 和 C++ MSBuild 支持基础架构识别;看起来它主要在 Microsoft.Common.CurrentVersion.targets 文件中处理。 【参考方案1】:

我只想声明,当使用&lt;MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish" Properties="$(_MSBuildProperties)" /&gt; 和项目$(MSBuildProjectFullPath) 具有ProjectReferences 具有&lt;None&gt;&lt;CopyToPublishDirectory&gt;PreserveNewest&lt;/CopyToPublishDirectory&gt;&lt;/None&gt; 时,&lt;Private&gt;false&lt;/Private&gt;(您可以应用于ProjectReferences)可能不起作用 .我已经阅读了 https://github.com/dotnet/sdk/blob/master/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Publish.targets 周围的源代码并找到了解决方案。您需要定义_GetChildProjectCopyToPublishDirectoryItems=false,例如:&lt;MSBuild Projects="$(MSBuildProjectFullPath)" Targets="Publish" Properties="TargetFramework=$(TargetFramework);_GetChildProjectCopyToPublishDirectoryItems=false" /&gt;

【讨论】:

【参考方案2】:

Private 标记维护用户对 Visual Studio 引用文件夹中“复制本地”复选框的覆盖。这控制是否使用来自 GAC 的引用,或者是否将引用的程序集复制到构建目录。

虽然我找不到任何关于此效果的 MSDN 文档(令人惊讶的是),但从行为和应用它的from the comment in Microsoft.Common.CurrentVersion.targets:1742 可以明显看出:

这在MSDN > Common MSBuild project items 中有记录,从行为和应用它的from the comment in Microsoft.Common.CurrentVersion.targets:1742 可以明显看出:

  <!--
    ============================================================

                                        ResolveAssemblyReferences

    Given the list of assemblies, find the closure of all assemblies that they depend on. These are
    what we need to copy to the output directory.

        [IN]
        @(Reference) - List of assembly references as fusion names.
        @(_ResolvedProjectReferencePaths) - List of project references produced by projects that this project depends on.

            The 'Private' attribute on the reference corresponds to the Copy Local flag in IDE.
            The 'Private' flag can have three possible values:
                - 'True' means the reference should be Copied Local
                - 'False' means the reference should not be Copied Local
                - [Missing] means this task will decide whether to treat this reference as CopyLocal or not.

        [OUT]
        @(ReferencePath) - Paths to resolved primary files.
        @(ReferenceDependencyPaths) - Paths to resolved dependency files.
        @(_ReferenceRelatedPaths) - Paths to .xmls and .pdbs.
        @(ReferenceSatellitePaths) - Paths to satellites.
        @(_ReferenceSerializationAssemblyPaths) - Paths to XML serialization assemblies created by sgen.
        @(_ReferenceScatterPaths) - Paths to scatter files.
        @(ReferenceCopyLocalPaths) - Paths to files that should be copied to the local directory.
    ============================================================
    -->

【讨论】:

如果缺少&lt;Private&gt;,则它不等于True。搜索“MSBuild CopyLocal 错误”。例如。见***.com/questions/1132243 @xmedeko,没错。我不确定@GPR 在哪里得到“如果不存在,则假定默认值为 True”,因为答案明确表示“[Missing] 意味着此任务将决定是否将此引用视为 CopyLocal”。大部分逻辑在msbuild\Reference.cs:949 是否有可能即使 &lt;Private&gt; 设置为 True,如果应用程序不使用该引用,MSBuild 仍然不会在输出中包含该引用?这是我在本地得到的当前行为...... @Ninja,如果 MSBuild 无法找到引用的程序集,这种情况最常发生。如果不直接被代码使用,也可能编译成功。您可以使用procmon 或MSBuild detailed logging 进行故障排除 @Mitch 啊,我明白了。因为这是我所看到的,奇怪的行为...我的构建成功但即使我将&lt;Private&gt; 设置为True 也看不到 DLL...我在想这可能是另一个 MSBuild 优化?我不是 100% 确定它没有被代码使用——但这只是一个猜测,因为构建成功......

以上是关于dubbo在项目有啥作用的主要内容,如果未能解决你的问题,请参考以下文章

PMP有啥用?

AppCompat文件夹有啥作用

vs2010中.vssscc是啥,有啥作用?

Java Web项目中,数据字典(.dic)文件有啥作用?怎么用?

Java电商项目面试题

Spring Boot+Dubbo 入门