我正在使用CosmosDB(以前是DocumentDB)进行调查,我们目前使用MongoDB,因此我试图将MongoAPI用于CosmosDB。
我已经在azure中创建了一个CosmosDB部署,创建了一个集合,并指定了“ / rateId”分区键。
据我从Microsoft的文档了解,此分区键应与我插入的每个文档中的一个属性相关,因此我试图插入一个基本文档,如下所示:
{
"rateId": "test.1",
"val": "test2"
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试插入此内容(通过Mongo C#驱动程序或通过MongoChef)时,出现错误“文档不包含分片键”。
我已经尽我所能地尝试了此方法,并且每次都因该错误而被拒绝。我是在误解这是怎么工作的,还是做错了什么?
我们有一个 API,其中包含一些我们想要公开公开的端点,以及一些我们不公开的端点。但是,我并不想简单地排除专用端点,我仍然希望它们可见,但仅限于某些用户或至少在不同的 url 下。这看起来应该很常见,但我无法找到如何做到这一点。
目前,我们已设置并运行 swagger,显示所有端点。ApiExplorerSettings一些控制器使用如下属性标记为“公共”组(其中SwaggerGroups.Public是字符串常量“public”):
[ApiExplorerSettings(GroupName = SwaggerGroups.Public)]
Run Code Online (Sandbox Code Playgroud)
理想情况下,我们会拥有一个显示所有标记为公共的控制器/方法的 swagger 页面,以及另一个显示所有端点的密码保护端点。这可能吗?
我们正在开发一个由多种不同服务组成的服务结构应用程序,而我们的应用程序工作方式的关键部分是这些服务需要大量调用彼此.
直到最近,当我们增加应用程序的负载并发现它大幅减速时,我们没有遇到任何问题.在经过多次调查和计时之后,我们发现问题似乎是当我们对一种类型的服务(我们有多个实例)进行大量调用时,调用似乎是我们调用服务之间的一些延迟,服务实际上开始处理请求.
我们在微软这里描述的服务之间打电话
为了更清楚:ServiceA获取对ServiceB的引用,然后调用ServiceB.GetResult(),我们记录在ServiceA中调用此方法的时间,我们在GetResult()中做的第一件事就是记录处理开始的时间.当没有负载时,只有几毫秒,一旦我们增加了负载,我们发现在这些时间之间有4-5秒的延迟.
这是服务面料的某种限制吗?我们有多个ServiceB实例,集群上的资源使用基本上没什么,CPU占用大约10%,所有节点上的内存使用率约为1/4,但是服务的吞吐量非常低,因为它在这里等待.
为什么要等?对于服务一次可以处理的不同呼叫,是否存在某种定义的限制?我们的沟通有问题吗?
谢谢.
我正在研究将Azure CosmosDB用于需要高读取吞吐量和扩展能力的应用程序.99%的活动都是读取,但偶尔我们需要从几个文件插入到可能是几百万的批次.
我创建了一个集合来测试和配置2500 RU /秒.但是我遇到了插入甚至只有120个小(500字节)文档的问题(我得到"请求率很大"错误).
我怎么可能以任何有用的方式使用文档数据库,如果我想插入一些文件,它将使用我所有的RU并阻止任何人阅读它?
是的,我可以增加配置的RU,但是如果我只需要2500次读取,我不想仅为偶尔的插入支付10000.
读取需要尽可能快,最好是在微软宣传的"单位数毫秒"范围内.插入物不需要尽可能快,但更快更好.
我已经尝试过使用我看过建议的存储过程,但是也无法可靠地插入所有存储过程,我已经尝试使用多个线程创建我自己的批量插入方法,如答案中所示,但这会产生非常慢的结果并且通常也会出错对于至少一些文件,似乎平均RU率远低于我所配置的.
我觉得我必须遗漏一些东西,我是否必须大量过度提供RU只是为了写作?是否有某种功能内置限制RU用于插入?如何在合理的时间内插入数十万个文档,而不会使集合变得不可用?
我正在使用 ASP.NET Core Identity 和 IdentityServer4 创建身份验证服务。一切正常,但我遇到了一个问题,因为在我们的实时环境中它托管在多台服务器上,在这种情况下,在一台服务器上生成的令牌(例如密码重置令牌)无效另外一个。
我正在设置这样的身份(自定义用户存储等在其他地方注册):
services.AddDataProtection()
.SetApplicationName("IdentityService");
services.AddIdentity<ApplicationUser, ApplicationRole>(options =>
{
options.Password.RequireNonAlphanumeric = false;
})
.AddDefaultTokenProviders();
Run Code Online (Sandbox Code Playgroud)
如您所见,我已尝试设置应用程序名称,使其在每台服务器上都相同,但这并没有解决问题。
我发现我可以创建一个 IXmlRepository来存储 Identity 使用的密钥:
services.AddDataProtection()
.SetApplicationName("IdentityService");
.AddKeyManagementOptions(s => s.XmlRepository = new CustomXmlRepo());
Run Code Online (Sandbox Code Playgroud)
如果我实现这个并将密钥存储在我们的数据库中,这能解决我的问题吗?有没有其他(更好)的方法?
c# asp.net-identity asp.net-core identityserver4 asp.net-core-identity
我目前正在测试 mongo atlas 的免费层,但是我反复遇到连接限制问题(免费层为 100)。
\n\n我在 Azure Service Fabric 应用程序中使用数据库,该应用程序具有许多服务并将在多个节点上运行(尽管目前我主要只是使用单节点本地集群在本地运行)。
\n\n对我来说,100 个连接似乎非常低,我知道这是一个免费层,但即使是较低层的付费集群也有一个低限制(https://docs.atlas.mongodb.com/connection-limits/)。我的生产集群可能会从 M20 开始,其限制为 700。
\n\n我目前完全没有信心在我的生产集群中使用 Mongo Atlas,因为我担心我会耗尽连接。
\n\n我之前有一个 mLab 集群(在之前的工作中),所有集群的连接限制约为 16000 个(而我们的连接通常约为 800 个)。
\n\n我正在使用我已阅读过的 C# 驱动程序,我不需要执行任何特定操作来关闭连接。然而,我有时发现我没有在本地运行任何东西(不是服务,甚至是 GUI),但连接数几乎为 100,就好像打开的连接没有被关闭一样。
\n\n我认为这些限制非常严格,对吗?我是否做错了什么而不断耗尽我的连接?
\n\n2019 年 9 月 16 日更新: \n我已与 Mongo 讨论此事并得到以下答复:\nOur connection limits are set conservatively to ensure that memory exhaustion does not lead to stability problems for your MongoDB Atlas cluster. However, we are in fact currently doing some deep …
我正在使用.Net core和angular 5创建一个网站。我使用最新的.Net core angular template(dotnet new angular与安装的.Net core 2.1一起使用)创建了该项目。
该项目使用angular cli来构建/打包并将哈希应用于绑定的js和css文件:
但是,将网站发布到azure应用程序服务后,我发现当浏览到该网站时,会看到旧版本,直到用F5手动刷新(不需要Ctrl-F5)。这似乎是因为尽管js / css文件不会被缓存,但包含这些文件引用的index.html页面将从缓存中提供。
当我按F5重新加载网站时,home从网站请求index.html(以下)(本例中为304,因为它没有更改,如果有,它将获取最新的):
但是,当我最初加载页面(通过书签或输入地址等)时,直接从缓存中提供页面:
这是预期的行为吗?为什么第一次加载页面与按F5相比有何不同?并且我可以防止缓存吗?
我正在使用 Angular 5 创建一个网站,它本质上是一个用于创建文档类型的 GUI。
我使用 SVG 来绘制文档,文档结构的性质意味着我最终会得到很多元素,在大型文档中,页面上可能有大约 20,000 个 DOM 元素(主要是 SVG)。许多 SVG 元素都有事件处理程序,例如mousedown、mouseenter、click。总共可能有几千个事件处理程序。
并不完全出乎意料的是,大型文档的性能变得非常糟糕,我正在努力改进它。我一直在使用 chrome 性能监视器来尝试找出原因,似乎是事件处理程序负责。我可以看到,几乎每个触发的事件处理程序的时间至少约为 70 毫秒。例如,当鼠标悬停在文档的某个区域上时:
这些事件处理程序调用的实际代码基本上没有执行任何操作(它被错误的 if 语句包围),并且当通过 console.time 对其进行计时时,我可以看到它需要 <1ms。
那么到底是什么花费了 70 多毫秒的时间,我能做些什么呢?
当文档很小时,这些相同的事件只需要大约 8 毫秒,但似乎事件处理程序越多,它们就越慢?
c# ×6
azure ×3
angular ×2
asp.net-core ×2
.net-core ×1
angular-cli ×1
javascript ×1
mongodb ×1
mouseevent ×1
nosql ×1
optimization ×1
swagger ×1
swagger-ui ×1
swashbuckle ×1