高并发服务器
文章平均质量分 92
由于项目需要做高并发语音通信服务器,把做的积累记录在这里,有可能会给别人设计服务器的时候一些启发.
从零开始积累.
添柴程序猿
10年编程工作,涉及到.Net,Java,Android,C,Python等,爱好算法,人工智能,大数据等领域, 虚心求教,一起进步,大学毕业参加工作,如今一晃10多年已过,时间飞逝....
展开
-
技术研究院006---B站自用的微服务框架——Kratos
大家都知道微服务有两个痛点,一个是如何拆分微服务,微服务的边界怎么划分制定;二是微服务上了规模之后如何管理,因为只要上了规模,任何小小的问题都可能会被放大,最后导致雪崩效应。Bilibili作为一个大型弹幕视频网站,在竞争日益激烈的互联网行业中,开始重视技术生态的演进,在微服务这块肯定也是相当出色的,今天就和大家推荐一个B站自家开源的微服务框架——Kratos。Kratos 小型轻量级 Go 微服务框架,包含大量微服务相关功能及工具。B站表示:我们研究提供完整的微服务研究体验,整合相关框架工转载 2021-10-10 13:08:17 · 1109 阅读 · 0 评论 -
微服务架构工作笔记001---认识Service Mesh
技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152Service Mesh作为下一代微服务技术的代名词,初出茅庐却深得人心一鸣惊人,大有一统微服务时代的趋势。那么到底什么是Service Mesh?一言以蔽之:Service Mesh是微服务时代的TCP协议。有了这样一个感性的初步认知,我们再来看到底什么是Service Mesh。提到Service Mesh,就不得不提微服务。根据维基百科的定义:微服务 (Microservi.转载 2020-08-05 10:23:32 · 356 阅读 · 0 评论 -
分布式工作笔记001---分布式系统中CAP 定理的含义
JAVA技术交流QQ群:170933152 分布式系统(distributed system)正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。本文介绍该定理。它其实很好懂,而且是显而易见的。下面的内容主要参考了 Michael Whittaker 的文章。一、分布式系...转载 2018-11-21 11:52:59 · 357 阅读 · 0 评论 -
云原生 CI/CD 框架 Tekton 初体验
Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架。Tekton 的前身是 Knative 项目的 build-pipeline 项目,这个项目是为了给 build 模块增加 pipeline 的功能,但是随着不同的功能加入到 Knative build 模块中,build 模块越来越变得像一个通用的 CI/CD 系统,于是,索性将 build-pipeline 剥离出 Knative,就变成了现在的 Tekton,而 Tekton 也从此致力于提供全功能、标准化的云原生 CI/CD 解转载 2021-10-16 17:30:00 · 1120 阅读 · 3 评论 -
技术研究院004---数据仓库系统的实现与使用(含OLAP重点讲解)
前言数据仓库是数据仓库开发中最核心的部分。然而完整的数据仓库系统还会涉及其他一些组件的开发,其中最主要的是ETL工程,在线分析处理工具(OLAP)和商务智能(BI)应用等。本文将对这些方面做一个总体性的介绍(尤其是OLAP),旨在让读者对数据仓库的认识提升到一个全局性的高度。创建数据仓库数据仓库的创建方法和数据库类似,也是通过编写DDL语句来实现。在过去,数据仓库系统大都建立在RDBMS上,因为维度建模其实也可以看做是关系建模的一种。但如今随着开源分布式数据仓库工具如Hadoop H...转载 2021-10-12 17:30:00 · 1143 阅读 · 0 评论 -
技术研究院005---如何基于DDD构建微服务架构
微服务构建本质上是软件构建过程中长期演进积累的一系列理念、架构原则、工具和最佳实践。领域驱动设计的软件思想体系和方法论可以用于指导微服务建模、微服务划分、微服务架构设计等相关工作,它可以促使技术人员与领域专家达成共识,构建领域边界合理、具备明确界限上下文、关注点分离、独立自治的微服务。01领域驱动设计概述领域驱动设计(Domain Driven Design)概念的兴起可以追溯到1986年,《人月神话》的作者Brooks提出软件的本质复杂性(Essential Complexity)存在转载 2021-10-13 15:30:00 · 332 阅读 · 0 评论 -
技术研究院003---六种方式,教你在SpringBoot初始化时搞点事情!
前言在实际工作中总是需要在项目启动时做一些初始化的操作,比如初始化线程池、提前加载好加密证书.......那么经典问题来了,这也是面试官经常会问到的一个问题:有哪些手段在Spring Boot 项目启动的时候做一些事情?方法有很多种,下面介绍几种常见的方法。1、监听容器刷新完成扩展点ApplicationListener<ContextRefreshedEvent>ApplicationContext事件机制是观察者设计模式实现的,通过ApplicationEvent和App转载 2021-10-11 17:30:00 · 254 阅读 · 0 评论 -
技术圈儿002---高并发整体可用性:一文详解降级、限流和熔断
水满则溢,月盈则亏,任何事物都不可能无限制的发展,我们的系统服务能力也一样。当随着流量的不断增长,达到或超过服务本身的可承载范围,系统服务的自我保护机制的建立就显得很重要了。本文希望可以用最通俗的解释和贴切的实例来带大家了解什么是限流、降级和熔断。Part1限流 - 自知之明和眼力见一个是本身的承载能力,一个是依赖方的服务能力,其实都是从当前系统的角度来说,1.1自知之明之被动限流我只有这么大的能力,只能服务这么多客户!系统对自身的承载能力需要有一个清晰的认识,对于超过承载能力的转载 2021-10-10 13:30:00 · 368 阅读 · 0 评论 -
微服务架构工作笔记003---了解认识google Kubernetes 容器管理
技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152Kubernetes 是什么?又叫K8S 是google 开源的项目Kubernetes 是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,方便了声明式配置和自动化。它拥有一个庞大且快速增长的生态系统。Kubernetes 的服务,支持和工具广泛可用。此页面是 Kubernetes 的概述。Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服转载 2020-08-05 10:57:09 · 345 阅读 · 0 评论 -
技术圈儿007---Redis 生产架构选型解决方案
在写开源项目的时候,想到了要支持多种redis部署方式,于是对于这块的生产环境的架构选型展开调研一 引擎版本推荐使用更新的引擎版本以支持更多的特性,Redis 6.0新特性说明 模块系统新增多个API。 支持SSL/TLS加密。 支持新的Redis协议:RESP3。 服务端支持多模式的客户端缓存。 支持多线程IO。 副本中支持无盘复制(diskless replication)。 Redis-benchmark新增了Redis.转载 2021-10-15 15:15:00 · 244 阅读 · 0 评论 -
JAVA高并发工作笔记0002---高并发编程之使用ThreadFactory来创建新的线程
技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152首先来构建线程封装类WorkThread,该类的功能主要是为了能够更好的管理线程而创建的public class WorkThread extends Thread { private Runnable target; //线程执行目标 private AtomicInteger counter; public WorkThread(Runnable转载 2020-11-10 14:27:31 · 241 阅读 · 0 评论 -
JAVA高并发工作笔记0001---高并发编程之ConcurrentLinkedDeque
技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152一、ConcurrentLinkedDeque介绍ConcurrentLinkedDeque 是双向链表结构的无界并发队列。从JDK 7开始加入到J.U.C的行列中。使用CAS实现并发安全,与 ConcurrentLinkedQueue 的区别是该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(插入/删除)。适合“多生产,多消费”的场景。内存一致性遵循对 Concurren转载 2020-11-09 17:20:36 · 428 阅读 · 0 评论 -
springcloud工作笔记104---Spring中的InitializingBean接口以及afterPropertiesSet的使用
技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152 这里为什么要说这个方法,因为我们物联网项目中,在做语音通信服务器的过程中,首先,由于硬件设备发给服务器的消息和命令码是各种各样的,而我们,启动服务器的时候把服务器的各种消息和处理该消息的类,绑定在一起,这样,当来了不同的消息,我们就能把消息分发给不同的消息处理类.所以,用到了,服务器启动的时候,需要在@Overridepublic void afterPropertiesSe...原创 2020-11-06 16:01:43 · 915 阅读 · 0 评论