当前位置: 首页 > news >正文

西安做网站的公司深圳英文网站设计

西安做网站的公司,深圳英文网站设计,丰台网站建设是什么,哪里可以检测丙型肝炎在上一篇文章中#xff0c;我们创建了一个从ElasticSearch的API到Reactor的Mono的简单适配器#xff0c;如下所示#xff1a; import reactor.core.publisher.Mono;private Mono indexDoc(Doc doc) {//... }现在#xff0c;我们希望以受控的并发级别运行此方法数百万次。 … 在上一篇文章中我们创建了一个从ElasticSearch的API到Reactor的Mono的简单适配器如下所示 import reactor.core.publisher.Mono;private Mono indexDoc(Doc doc) {//... } 现在我们希望以受控的并发级别运行此方法数百万次。 基本上我们想看看索引代码在负载下的行为对其进行基准测试。 用jFairy伪造数据 首先我们需要一些美观的测试数据。 为此我们将使用方便的jFairy库。 我们将索引的文档是一个简单的POJO Value class Doc {private final String username;private final String json; } 生成逻辑包装在Java类中 import io.codearte.jfairy.Fairy; import io.codearte.jfairy.producer.person.Address; import io.codearte.jfairy.producer.person.Person; import org.apache.commons.lang3.RandomUtils;Component class PersonGenerator {private final ObjectMapper objectMapper;private final Fairy fairy;private Doc generate() {Person person fairy.person();final String username person.getUsername() RandomUtils.nextInt(1_000_000, 9_000_000);final ImmutableMapString, Object map ImmutableMap.String, Objectbuilder().put(address, toMap(person.getAddress())).put(firstName, person.getFirstName()).put(middleName, person.getMiddleName()).put(lastName, person.getLastName()).put(email, person.getEmail()).put(companyEmail, person.getCompanyEmail()).put(username, username).put(password, person.getPassword()).put(sex, person.getSex()).put(telephoneNumber, person.getTelephoneNumber()).put(dateOfBirth, person.getDateOfBirth()).put(company, person.getCompany()).put(nationalIdentityCardNumber, person.getNationalIdentityCardNumber()).put(nationalIdentificationNumber, person.getNationalIdentificationNumber()).put(passportNumber, person.getPassportNumber()).build();final String json objectMapper.writeValueAsString(map);return new Doc(username, json);}private ImmutableMapString, Object toMap(Address address) {return ImmutableMap.String, Objectbuilder().put(street, address.getStreet()).put(streetNumber, address.getStreetNumber()).put(apartmentNumber, address.getApartmentNumber()).put(postalCode, address.getPostalCode()).put(city, address.getCity()).put(lines, Arrays.asList(address.getAddressLine1(), address.getAddressLine2())).build();}} 相当无聊的代码实际上确实很酷。 每次运行它时它都会生成随机但合理的JSON如下所示 {address: {street: Ford Street,streetNumber: 32,apartmentNumber: ,postalCode: 63913,city: San Francisco,lines: [32 Ford Street,San Francisco 63913]},firstName: Evelyn,middleName: ,lastName: Pittman,email: pittmanmail.com,companyEmail: evelyn.pittmanwoodsllc.eu,username: epittman5795354,password: VpEfFmzG,sex: FEMALE,telephoneNumber: 368-005-109,dateOfBirth: 1917-05-14T16:47:06.273Z,company: {name: Woods LLC,domain: woodsllc.eu,email: contactwoodsllc.eu,vatIdentificationNumber: 30-0005081,url: http://www.woodsllc.eu},nationalIdentityCardNumber: 713-79-5185,nationalIdentificationNumber: ,passportNumber: jVeyZLSt3 } 整齐 不幸的是没有记录jFairy是否是线程安全的因此以防万一在实际代码中我正在使用ThreadLocal 。 好的所以我们只有一个文档但是我们需要数百万个文档 使用for -loop太过时了。 您会告诉我们无限的随机人流吗 import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers;private final Scheduler scheduler Schedulers.newParallel(PersonGenerator.class.getSimpleName());MonoDoc generateOne() {return Mono.fromCallable(this::generate).subscribeOn(scheduler); }FluxDoc infinite() {return generateOne().repeat(); } generateOne()在MonoDoc包装阻塞的generate()方法。 另外 generate()在parallel Scheduler上运行。 为什么 事实证明jFairy在单个内核上还不够快很多随机数生成表查找等因此我不得不并行化数据生成。 通常不应该是一个问题。 但是当生成伪造数据的速度比接触外部服务器的响应式应用程序慢时它会告诉您有关基于Netty的Spring Web-flux的性能。 同时调用ElasticSearch 好的拥有无数好看的假测试数据流我们现在要在ElasticSearch中对其进行索引。 PostConstruct void startIndexing() {index(1_000_000, 1_000); }private void index(int count, int maxConcurrency) {personGenerator.infinite().take(count).flatMap(this::indexDocSwallowErrors, maxConcurrency).window(Duration.ofSeconds(1)).flatMap(Flux::count).subscribe(winSize - log.debug(Got {} responses in last second, winSize)); }private MonoIndexResponse indexDocSwallowErrors(Doc doc) {return indexDoc(doc).doOnError(e - log.error(Unable to index {}, doc, e)).onErrorResume(e - Mono.empty()); } 当应用程序启动时它将启动对一百万个文档的索引编制。 注意告诉Reactor它与RxJava相同多么容易它应该调用多达1000个对ElasticSearch的并发请求。 每秒我们计算收到的回复数 Got 2925 responses in last second Got 2415 responses in last second Got 3336 responses in last second Got 2199 responses in last second Got 1861 responses in last second 不错 特别是当您考虑到有多达一千个并发HTTP请求并且我们的应用程序启动时几乎只有30个线程峰值好吧这是localhost - localhost 有罪 但是我们实际上如何知道所有这些呢 日志记录很好但是到了二十一世纪我们可以做得更好 监视将是下一批的主题。 源代码可在react reactive-elastic-search分支中的github.com/nurkiewicz/elastic-flux中获得。 翻译自: https://www.javacodegeeks.com/2018/01/spring-reactor-elasticsearch-bechmarking-fake-test-data.html
http://www.sadfv.cn/news/303392/

相关文章:

  • 网站名称怎么起好听wordpress预览不正常
  • wordpress中动态设置轮播图片淘宝seo 优化软件
  • 搭建网站属于什么专业网站代码开发方式
  • 南京网站设计网站wordpress手机版主题
  • 北京专业建设网站公司外国人做外贸都会浏览哪些网站
  • 做装修那个网站好大庆网站开发
  • 个人如何申请网站职业生涯规划大赛策划书
  • 河北建设厅网站怎么搜索文件网站的标志可以修改吗
  • 开公司可以在哪些网站做推广wordpress网站存放在
  • 网站 转成 微信小程序天津专门做网站的公司
  • 佛山网站定制开发专题网站策划书
  • 东莞哪里的网站建设效果好中国企业报官网
  • 湖北省住房和城乡建设厅门户网站网络推广沈阳
  • 东阳企业网站微商城建设wordpress球形标签
  • 长沙网站优化培训做公司网站哪家好重庆九龙坡区
  • 可以做数学题的网站企业网站每年的费用
  • 个人制作的网站网站上的图片怎么做
  • 做淘宝详情的网站phpcms如何做装饰网站
  • 为网站吸引流量的方法章丘做网站优化
  • iis 创建网站wordpress 快乐麻花
  • 江都区城乡建设局网站马局七牛镜像 wordpress
  • 网站域名后缀那个好销售管理app软件
  • 山东省建设厅官方网站怎么样海口小程序制作公司
  • 东营网站建设关键字排名问题老榕树智能建站软件
  • 网站无icp备案广州市官网网站建设多少钱
  • 榆林建设网站上海公司网站设计
  • 蓝冠在线网站建设做网站的公司是什么
  • 国外著名购物网站排名wordpress播放器安装
  • 建设公司网站需要准备什么仿微博网站模板
  • 河南开元建设有限公司网站自己做网站的费用