随笔分类 - 架构
摘要:1. 什么是布隆过滤器? 布隆过滤器(BloomFilter)是由一个叫“布隆”的小伙子在1970年提出的,它是一个很长的二进制向量,主要用于判断一个元素是否在一个集合中。 在介绍原理之前,要先讲一下Hash函数的概念。 我们在Java中的HashMap,HashSet其实也接触过hashcode(
阅读全文
摘要:1. 缓存穿透 缓存穿透是指查询的key在缓存中是不存在的,那么就会直接打在数据库上,造成数据库压力增大。 eg: 如果请求带着id过来了,像查询id=-1的数据, 于是缓存里自然没有该数据,因为数据库本来也就没有该数据。 那这个就有趣了,如果不断大量恶意请求,那就是直接绕过缓存, 一直在查数据库,
阅读全文
摘要:经常有人会问: “应该选择RabbitMQ还是Kafka?”。 基于某些原因, 许多开发者会把这两种技术当做等价的来看待。 的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。 不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软
阅读全文
摘要:1. 消息队列的作用 消息中间件是日常架构中比较流行的一个中间件。 常用的产品有: ActiveMQ, RabbitMQ, RocketMQ, ZeroMQ等。 那么消息中间件在架构中有哪些作用呢? 总结一下,主要作用如下: 异步处理、应用解耦、流量削峰、日志处理 2. 架构作用详解 a. 异步处理
阅读全文
摘要:Apache CXF是一个开源的WebService RPC框架。 例子: 1. 新建一个maven web项目, 添加pom 如下: 2. 定义远程服务接口,并用@WebService标明是一个远程的WebService 3. 远程服务的实现(通过endpointInterface指明对应的接口)
阅读全文
摘要:1. 什么是RPC RPC(Remote Procedure Call)即远程过程调用,指的是不同机器间系统方法的调用,这和 同机器动态链接库(DLL)有点类似,只不过RPC是不同机器,通过网络通信来访问远程的资源。 2. Java RMI技术 RMI(Remote Method Invocatio
阅读全文
摘要:最近,微服务这个概念越来越流行,很多企业开始选择微服务作为自己新的架构。 那么,什么是微服务呢? 我们先来看一下架构大神martin fowler对微服务的解释。 The term "Microservice Architecture" has sprung up over the last few
阅读全文
摘要:1. 第一阶段:单服务器架构 这一阶段是我们的起步阶段,比如我们创业的时候刚购买了一台云主机。 在这一阶段,为了节约成本,我们将所有的应用程序,数据库,文件全部放在这台服务器上。 然后,CPU或者内存的成本在开发阶段也使用最小能接受的成本,然后开始我们的服务器开发之路。 2. 第二阶段:应用服务和数
阅读全文