摘要: ElasticSearch 是一个基于 Lucene 的分布式全文检索框架,在 Lucene 类库的基础上实现,可以避免直接基于 Lucene 开发,这一点和 Java 中 Netty 对 IO/NIO 的封装有些类似。 ElasticSearch 开放了一系列的 RESTful API,基于这些 阅读全文
posted @ 2023-03-20 15:06 jiaozg 阅读(28) 评论(0) 推荐(0)
摘要: 现在要设计电商网站的订单数据库模块,经过对业务增长的估算,预估三年后,数据规模可能达到 6000 万,每日订单数会超过 10 万。 存储实现,订单作为电商业务的核心数据,应该尽量避免数据丢失,并且对数据一致性有强要求,肯定是选择支持事务的关系型数据库,比如使用 MySQL 及 InnoDB 存储引擎 阅读全文
posted @ 2023-03-20 14:37 jiaozg 阅读(108) 评论(0) 推荐(0)
摘要: 单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 要避免过度设计。因为分库分表虽然可以提高性能,但是盲目地进行分库分表只会增加系统的复杂度。 数据库连接限制 数据库的连接是有限制的,不能无限制创建,比如 MySQL 中可以使用 max_connections 查看默认的最大连 阅读全文
posted @ 2023-03-20 14:19 jiaozg 阅读(54) 评论(0) 推荐(0)
摘要: 互联网大部分业务场景都是读多写少的,对于电商等典型业务,读和写的请求对比可能差了不止一个数量级。为了不让数据库的读成为业务瓶颈,同时也为了保证写库的成功率,一般会采用读写分离的技术来保证。 读写分离的实现是把访问的压力从主库转移到从库,特别在单机数据库无法支撑并发读写,并且业务请求大部分为读操作的情 阅读全文
posted @ 2023-03-20 13:58 jiaozg 阅读(65) 评论(0) 推荐(0)
摘要: Sidecar 设计模式 在系统设计时,边车模式通过给应用程序添加边车的方式来拓展应用程序现有的功能,分离通用的业务逻辑,比如日志记录、流量控制、服务注册和发现、限流熔断等功能。通过添加边车实现,微服务只需要专注实现业务逻辑即可,实现了控制和逻辑的分离与解耦。 边车模式中的边车,实际上就是一个 Ag 阅读全文
posted @ 2023-03-20 13:49 jiaozg 阅读(81) 评论(0) 推荐(0)
摘要: 容器化技术简介 相比传统虚拟化技术,容器技术是一种更加轻量级的操作系统隔离方案,可以将应用程序及其运行依赖环境打包到镜像中,通过容器引擎进行调度,并且提供进程隔离和资源限制的运行环境。 虚拟化技术 虚拟化技术通过 Hypervisor 实现虚拟机与底层硬件的解耦,是一种运行在基础物理服务器和操作系统 阅读全文
posted @ 2023-03-20 13:44 jiaozg 阅读(228) 评论(0) 推荐(0)
摘要: 一部分配置会经常发生修改,比如限流降级开关配置、业务中的白名单配置等。这些配置项除了变更频繁,还要求实时性,如果采取和应用一起发布的方式,那么每次变更都要重新发布服务,非常不方便。 配置管理如何实现 分布式配置管理的本质就是一种推送-订阅模式的运用。配置的应用方是订阅者,配置管理服务则是推送方,客户 阅读全文
posted @ 2023-03-20 13:35 jiaozg 阅读(89) 评论(0) 推荐(0)
摘要: 随着服务的拆分,系统的模块变得越来越多,不同的模块可能由不同的团队维护,一个请求可能会涉及几十个服务的协同处理, 牵扯到多个团队的业务系统。 假设现在某次服务调用失败,或者出现请求超时,需要定位具体是哪个服务引起的异常,哪个环节导致的超时,就需要去每个服务里查看日志,这样的处理效率是非常低的。 系统 阅读全文
posted @ 2023-03-20 09:24 jiaozg 阅读(33) 评论(0) 推荐(0)
摘要: 为什么需要服务注册和发现 分布式系统下微服务架构的一个重要特性就是可以快速上线或下线,从而可以让服务进行水平扩展,以保证服务的可用性。 假设有一个电商会员服务,随着业务发展,服务器负载越来越高,需要新增服务器。如果没有服务注册与发现,就要把新的服务器地址配置到所有依赖会员模块的服务,并相继重启它们, 阅读全文
posted @ 2023-03-20 09:14 jiaozg 阅读(67) 评论(0) 推荐(0)