开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。API网关作为所有请求的入口,请求量大,我们可以通过对并发访问的请求进行限速来保护系统的可用性。常用的限流算法比如有令牌桶算法,漏桶算法,计数器算法等。在Zuul中我们可以自己去实现限流的功能(Zuul中如何限流在我的书《SpringCloud微服务-全栈技术与案例解析》中有详细讲解),SpringCloudGateway的出现本身就是用来
分类:
编程语言 时间:
2020-08-03 23:25:42
阅读次数:
105
前言网上关于kubernetes网络部署的方案非常多,那为什么还要自己写这么一篇教程呢?因为这篇文章中将介绍一种较为少见的部署方式,使用kuberouter作为kubernetes系统网络组件,直接替换掉kubeproxy、flannel/calico等网络组件。使用这种部署方式的目的,是替换kube-proxy,减少iptables依赖,同时还能提供网络服务。<!--more-->替
分类:
Web程序 时间:
2020-08-03 20:00:53
阅读次数:
96
了解一个框架你要这样想问题:如果是你要做一个springcloud一个微服务的框架,需要解决大量请求形成高并发的问题,你会这么做? 首先我们要想想单体架构中所带来的问题,所有的代码集中在同一个项目中。虽然便于管理,但是当项目足够庞大时,所有的业务模块都集中在一个JVM进程中,会面临很多问题: 1、项 ...
分类:
编程语言 时间:
2020-08-02 12:43:28
阅读次数:
98
写在前面在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题。用户的合法性与数据的可见性是数据安全中非常重要的一部分。但是,一方面,不同的应用对于数据的合法性和可见性要求的维度与粒度都有所区别;另一方面,以当前微服务、多服务的架构方式,如何共享Session,如何缓存认证和授权数据应对高并发访问都迫切需要我们解决。Shiro的出现让我们可以快速和简单的应对我们应用的数据安全问题Shiro介绍
分类:
编程语言 时间:
2020-08-02 10:20:00
阅读次数:
101
这道面试题涉及的知识点比较多,主要考察的是面试者的综合技术能力。高并发系统的设计手段有很多,主要体现在以下五个方面。1、前端层优化①静态资源缓存:将活动页面上的所有可以静态的元素全部静态化,尽量减少动态元素;通过CDN、浏览器缓存,来减少客户端向服务器端的数据请求。②禁止重复提交:用户提交之后按钮置灰,禁止重复提交。③用户限流:在某一时间段内只允许用户提交一次请求,比如,采取IP限流。2、中间层负
分类:
其他好文 时间:
2020-08-02 10:17:55
阅读次数:
84
1.ThreadLocal是什么?ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,适用于各个线程不共享变量值的操作。2.ThreadLocal工作原理是什么?ThreadLocal原理:每个线程的内部都维护了一个ThreadLocalMap,它是一个Map(key,value)
分类:
编程语言 时间:
2020-08-02 10:13:59
阅读次数:
73
经过读写分离的优化后,小王可算是轻松了一段时间,读写分离具体的方案请查看这篇文章:Sharding-JDBC:查询量大如何优化?可是好景不长,业务发展是在太快了。数据库中的数据量猛增,由于所有表都在一个数据库中,导致服务器本地存储快满了。从上图我们可以看的出来,由于表的数量较多,每个表的数据量也较大,但是还没到水平拆分的地步。目前遇到的问题是服务器的存储不够了,短期内还不用水平拆分,那么方案呼之欲
分类:
数据库 时间:
2020-08-02 10:09:00
阅读次数:
81
前言 Java中的线程池是一个很重要的概念,它的应用场景十分广泛,可以被广泛的用于高并发的处理场景。J.U.C提供的线程池:ThreadPoolExecutor类,可以帮助我们管理线程并方便地并行执行任务。因此了解并合理使用线程池非常重要。 本文对线程池采用 3W 的策略结合源码进行思考逐层分析,即 ...
分类:
编程语言 时间:
2020-08-01 21:28:20
阅读次数:
85
目前18.6版本和之前的coredns都会出现超时5s的情况,那么为什么会出现coredns超时的情况发生?背景在Kubernetes中,Pod访问DNS服务器(kube-dns)的最常见方法是通过服务抽象。因此,在尝试解释问题之前,了解服务的工作原理以及因此在Linux内核中如何实现目标网络地址转换(DNAT)至关重要。服务是如何工作的?在iptables模式下(默认情况下),每个服务的kube
分类:
系统相关 时间:
2020-08-01 12:39:45
阅读次数:
104
摘要:最近办了一件蠢事,我在一个高并发的订阅事件里操作数据库的I/O 操作,坑了自己一把,虽然定时清除了数据,但是跑了一段时间之后还是出问题了,后面就加入了队列去存储一段时间的数据,解决了这个问题,操作内存和磁盘不是一个级别的.特别是高并发的情况下,最好别对磁盘进行I/O操作,用不好只能坑了自己. ...
分类:
编程语言 时间:
2020-07-31 14:05:29
阅读次数:
119