精简版
如果我将用户分成碎片,我该如何提供"用户搜索"?显然,我不希望每次搜索都能击中每一个碎片.
长版
通过分片,我的意思是有多个数据库,每个数据库都包含总数据的一小部分.对于(一个天真的)示例,数据库UserA,UserB等可能包含名称以"A","B"等开头的用户.当新用户注册时,我会简单地检查他的名字并将其置于正确的位置.数据库.当返回的用户登录时,我再次查看他的名字以确定正确的数据库以从中提取信息.
分片与读取复制的优点是读取复制不会缩放您的写入.所有写入主站的写入都必须转到每个从站.从某种意义上说,即使读取负载是分布式的,它们也都承载相同的写入负载.
同时,分片不关心彼此的写作.如果Brian在UserB分片上注册,则UserA分片不需要听到它.如果Brian向Alex发送消息,我可以在UserA和UserB分片上记录该事实.通过这种方式,当Alex或Brian登录时,他可以从他自己的分片中检索所有发送和接收的消息,而无需查询所有分片.
到现在为止还挺好.搜索怎么样?在这个例子中,如果Brian搜索"Alex",我可以检查UserA.但如果他用他的姓氏"史密斯"搜索亚历克斯呢?每个碎片都有史密斯.从这里,我看到两个选项:
搜索可以缩放吗?如果是这样,这种索引方法是否合适?还有别的吗?
我有一个带有嵌入式Perl解释器的C程序.我希望能够从程序中预编译一些Perl代码.我怎么做?
基本原理(如果有人感兴趣)是能够编译一次,存储解析树,并执行多次(只要编译的代码不会改变).
谢谢!马杜
PS:我使用的是Perl-5.8,但要知道Perl-6.0是否能以任何方式使这更容易.
我们已经在亚马逊EC2上与HAProxy争夺了几天; 到目前为止,这种体验一直很好,但我们仍然在努力从软件负载均衡器中挤出更多性能.我们并不完全是Linux网络高手(我们通常是.NET商店),但我们到目前为止仍然拥有自己的,试图设置适当的ulimits,检查内核消息和tcpdumps是否存在任何异常情况.到目前为止,我们达到了大约1,700个请求/秒的平台,此时客户端超时比比皆是(我们一直在使用和调整httperf以此目的).一位同事和我正在收听最新的Stack Overflow播客,其中Reddit创始人注意到他们的整个站点都运行在一个HAProxy节点上,并且到目前为止它还没有成为瓶颈.确认!要么以某种方式没有看到许多并发请求,我们正在做一些可怕的错误,或者EC2的共享性质限制了Ec2实例的网络堆栈(我们使用的是大型实例类型).考虑到Joel和Reddit创始人都认为网络可能是限制因素这一事实,我们看到的限制是否可能?
任何想法都非常感谢!
编辑事实上,实际问题看起来并不是负载均衡器节点!罪魁祸首实际上是运行httperf的节点,在这个例子中.由于httperf为每个请求构建并断开套接字,因此它在内核中花费了大量的CPU时间.当我们提高请求率时,TCP FIN TTL(默认为60秒)会使套接字保持太长时间,并且ip_local_port_range的默认值对于此使用方案来说太低了.基本上,在客户端(httperf)节点持续创建和销毁新套接字几分钟后,未使用的端口数量用尽,后续"请求"在此阶段出错,产生的请求数/秒数较少且数量较多错误.
我们也看过nginx,但我们一直在使用RighScale,他们已经有了HAProxy的插件脚本.哦,当然,除非证明是绝对必要的,否则我们的截止日期太紧了[当然].幸运的是,在AWS上允许我们并行测试使用nginx的另一个设置(如果有保证),并在稍后进行切换.
此页面相当好地描述了每个sysctl变量(在这种情况下调整了ip_local_port_range和tcp_fin_timeout).
优秀UI设计师的特点是什么?如今,与交互设计能力相比,人们必须具备多少图形设计能力.随着WPF和Silverlight的出现,我认为这一点越来越重要.
我个人认为自己擅长交互设计,但想加强我在图形设计领域的技能.是否有可能学习这些技能,或者你是否与他们一起出生?任何人都可以推荐任何有用的好书或资源吗?
谢谢,
克雷格
我的单元测试项目中有以下方法:
[TestMethod]
[HostType("ASP.NET")]
[UrlToTest("http://localhost:3418/Web/SysCoord/ChooseEPA.aspx")]
[AspNetDevelopmentServerHost("%PathToWebRoot%")]
public void TestMethod1()
{
Page page = TestContext.RequestedPage;
Assert.IsTrue(false, "Test ran, at least.");
}
Run Code Online (Sandbox Code Playgroud)
我得到了这个例外:
测试适配器'WebHostAdapter'在运行测试'TestMethod1'时引发异常.无法正确配置网站; 获取ASP.NET进程信息失败.请求' http:// localhost:3418/SysCoord/VSEnterpriseHelper.axd '返回错误:远程服务器返回错误:(404)Not Found.远程服务器返回错误:(404)Not Found.
该页面在URL的浏览器中正常工作:http:// localhost:3418/Web/SysCoord/ChooseEPA.aspx.
此物理路径为:C:\ ESI\HR_Connect2\BenefitChangeSystem\Application_DEV\Web\SysCoord.
任何想法,将不胜感激.
更新1
根据本文,我的web.config文件中添加了以下内容.还使web.config可写并杀死/重新启动开发Web服务器.行为没有变化.
<location path="VSEnterpriseHelper.axd">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
Run Code Online (Sandbox Code Playgroud)
更新2
将AspNetDevelopmentServerHost属性更改为等效的[AspNetDevelopmentServerHost("%PathToWebRoot%\ solutionfolder\webfolder","/ webfolder")]解决了404问题.
不幸的是,测试开始返回500错误.进步,但并不多.使用干净的项目进行试验和错误得出的结论是,对web.config中的自定义类的引用导致了问题.
例如:
<profile enabled="true" defaultProvider="MyProfileProvider">
<providers>
<add name="MyProfileProvider" connectionStringName="ProfileConnectionString" applicationName="/MyApp" type="System.Web.Profile.SqlProfileProvider"/>
</providers>
<properties>
<add name="Theme" type="String" defaultValue="Default"/>
<add name="LastLogon" type="DateTime"/>
<add name="LastLogonIp" type="String"/>
<!--
<add name="EmployeeSearchCriteria" type="MyApplicationFramework.Profile.EmployeeSearchCriteria"/>
<add name="DocumentSearchCriteria" type="MyApplicationFramework.Profile.DocumentSearchCriteria"/>
--> …
Run Code Online (Sandbox Code Playgroud) 免责声明:以下是针对XML的罪行.这就是我试图用XSLT改变它的原因:)
我的XML目前看起来像这样:
<root>
<object name="blarg" property1="shablarg" property2="werg".../>
<object name="yetanotherobject" .../>
</root>
Run Code Online (Sandbox Code Playgroud)
是的,我将所有文本数据放在属性中.我希望XSLT能救我; 我想走向这样的事情:
<root>
<object>
<name>blarg</name>
<property1>shablarg</name>
...
</object>
<object>
...
</object>
</root>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我实际上已经完成了所有这些工作,除了我对XML的罪恶更加特殊.一些标签看起来像这样:
<object description = "This is the first line
This is the third line. That second line full of whitespace is meaningful"/>
Run Code Online (Sandbox Code Playgroud)
我在linux下使用xsltproc,但它似乎没有任何保留空格的选项.我试图使用xsl:preserve-space和xml:space ="preserve"无济于事.我发现的每个选项似乎都适用于在元素本身内保留空格,而不是属性.每一次,以上都改为:
This is the first line This is the third line. That second line full of whitespace is meaningful
所以问题是,我可以保留属性空白吗?
我目前有两个接受任何号码的文本框.我有一个文本块,它输入两个数字并计算平均值.
我想知道是否有办法将这个文本块绑定到两个文本框并使用自定义转换器来计算平均值?我目前正在捕获两个文本框上的文本更改事件并计算平均值,但我认为数据绑定会更有效,更容易.
在课堂上,我们都在"学习"数据库,每个人都在使用Access.对此感到厌烦,我正在尝试做其他类正在做的事情,但使用MySQL的原始SQL命令而不是使用Access.
我已设法创建数据库和表,但现在如何在两个表之间建立关系?
如果我有这样的两个表:
CREATE TABLE accounts(
account_id INT NOT NULL AUTO_INCREMENT,
customer_id INT( 4 ) NOT NULL ,
account_type ENUM( 'savings', 'credit' ) NOT NULL,
balance FLOAT( 9 ) NOT NULL,
PRIMARY KEY ( account_id )
)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE customers(
customer_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
address VARCHAR(20) NOT NULL,
city VARCHAR(20) NOT NULL,
state VARCHAR(20) NOT NULL,
PRIMARY KEY ( customer_id )
)
Run Code Online (Sandbox Code Playgroud)
如何在两个表之间创建"关系"?我希望每个帐户都被"分配"一个customer_id(以表明谁拥有它).
我想建立一个大的线性编程模型来解决一个有趣的问题.我最熟悉Java.有哪些工具/库?
wpf ×2
amazon-ec2 ×1
binding ×1
c ×1
database ×1
foreign-keys ×1
haproxy ×1
java ×1
mysql ×1
perl ×1
scalability ×1
scaling ×1
session ×1
sharding ×1
silverlight ×1
sql ×1
unit-testing ×1
whitespace ×1
xml ×1
xslt ×1