发布了文章2021-12-14
加入我们,你将1.建设大规模分布式系统,打造新一代以云原生和 Serverless 技术为基础的互联网开发领域基础设施平台;2.打造一整套可支持各种复杂业务场景,具备高可用,高性能,高扩展性,从软件设计到上线运维,贯穿整个开发生命周期的开发框架;3.提供全方位立体...
发布了文章2021-11-17
缓存是高并发系统架构中的利器,通过利用缓存,系统可以轻而易举的扛住成千上万的并发访问请求,但在享受缓存带来的便利的同时,如何保证数据库与缓存的数据一致性,一直是一个难题,在本篇文章中分享如何在系统架构中保障缓存一致性问题。
回答了问题2021-11-03
[链接]看这文章吧。写的比较清楚
回答了问题2021-11-01
我理解“预提交”的核心思想是提前锁定资源。举个例子来说比如说在电商系统下单的时候,支付前会锁定库存,支付完成后会实际扣减库存,如果超时未支付则释放锁定的库存。
回答了问题2021-11-01
[1,1,2,3]结果就是2啊,有什么问题?提交是执行所有的测试用例,全部通过了才算通过。
回答了问题2021-10-27
Java泛型是通过类型擦除来实现的,所以range instanceof List<FunctionTimeVo>这种形式是不合法的。如果不想让编译器产生警告,在方法上加个注解@SuppressWarnings("unchecked")就可以了。
回答了问题2021-10-21
可以实现,主设备分不同的exchange,然后再通过routingKey路由到不同的子设备。
回答了问题2021-10-12
带问号的是prepared statement,一般在做监控的时候为了保证性能,不会去读取sql里面的具体参数,因为那样的话参数组合太多了,没法存储。常规做法是采样,或者就用这个?的形式,提取sql pattern。
回答了问题2021-10-12
这不是乱码,web socket是二进制的协议,需要用对应的类库来解析字节流。
发布了文章2021-10-10
关于如何建设高并发系统的一些经验总结,仅供参考,欢迎交流。前言基础设施数据库架构应用规范总结前言离开饿了么有一段时间了,在饿了么期间从2017年开始接手运单系统的开发和维护工作,从最早的日均百万单,到离开时的日均千万单,业务的快速发展再加上外卖业务的...
回答了问题2021-10-09
首先,CAP是应用于分布式系统领域的,所以要理解CAP首先要理解分布式系统,推荐阅读:[链接]CAP不是针对数据库的,比如Zookeeper是CP的,Redis是AP的,这些分布式系统是应用了CAP理论来实现的,还有你说的副本、同步这些是为了解决高可用性问题的,具体的都可以参考...
回答了问题2021-10-08
为什么需要动态设置超时时间呢。超时一般设置的是处理时间的上限,如果在上限内处理完了,那没问题,如果处理不完就应该超时,如果去把超时动态调大,那这超时的意义在哪呢。如果一定要通过对成功响应的时间平均值计算出来,那通过监控计算出来一个平均值设置一下就...
回答了问题2021-10-08
golang通过多返回值来处理错误,一般会返回一个error类型的结果参数,这是一个接口,在工程实践中可以返回自定义实现的error,调用方根据接口定义使用结果断言转成具体的error实现,通过获取错误码来区分不同的异常。
回答了问题2021-09-28
把返回值error打出来,应该是有error的。error的原因应该是http的request.Body只能读一次,第二次读的时候返回了EOF的错误。
回答了问题2021-09-27
用Mockito可以指定mock的方法。
回答了问题2021-09-27
虽然有ack机制,但也不是保证消息完全不会丢失的,因为rabbitmq的消息是会存储在内存中,再写入磁盘的,如果还没来得及写入磁盘,消息可能会丢失:[链接]。
回答了问题2021-09-27
根据我的经验,建议优先使用分布式锁。并发量很大的时候使用悲观锁是不合适的,首先性能就跟不上,而且DB是要保护起来的,大量的锁请求也容易出问题。
回答了问题2021-09-24
问题有点抽象,一般通用方案有两种:空间换时间。通过预处理或者适当冗余一些表,通过结果表来直接得到结果,避免联表查询。使用NoSQL的方式,比如ES、HBase等等。
回答了问题2021-09-23
现在已经不推荐用Gopath模式了,推荐GoModule模式。在GoModule模式下不需要把源码放在src下了,pkg目录中主要是存放gomodule的依赖。
回答了问题2021-09-23
MESI协议的核心思想是:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新...