架构设计
VCHH
这个作者很懒,什么都没留下…
展开
-
Netty 长连接服务
Netty 长连接服务netty目录[-]推送服务Netty 是什么瓶颈是什么更多的连接非阻塞 IOJava NIO 实现百万连接Netty 实现百万连接瓶颈到底在哪如何验证怎么去找那么多机器讨巧的做法更高的 QPS如何优化数据结构解决 CPU 瓶颈解决 GC 瓶颈其他优化最后成果推送服务 还记得一年半前,做的一个项目需要用到 Android 推送服转载 2016-05-04 20:16:55 · 817 阅读 · 0 评论 -
正确理解线程池
一、问题描述Netty是最近非常流行的高性能异步通讯框架,相对于Java原生的NIO接口,Netty封装后的异步通讯机制要简单很多。但是小K最近发现并不是所有开发人员在使用的过程中都了解其内部实现机制,而是照着葫芦画瓢。网上简单搜索下,在客户端使用Netty建立连接池的文章也是比较少。今天小K给大家简单介绍下使用Netty建立连接池的方法。首先我们来看下Netty官方给出的客户端s转载 2016-09-27 11:06:42 · 685 阅读 · 0 评论 -
Spring框架的设计理念与设计模式详解
Spring作为现在最优秀的框架之一,已被广泛的使用,本文将从另外一个视角试图剖析出Spring框架的作者设计Spring框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成Spring的骨骼架构?Spring的AOP特性又是如何利用这些基础的骨骼架构来工作的?Spring中又使用了那些设计模式来完成它的这种设计的?它的这种 设计理念对对我们以后的软件设计转载 2016-09-27 11:09:59 · 508 阅读 · 0 评论 -
Kafka设计和原理详解
一、Kafka简介本文综合了我之前写的kafka相关文章,可作为一个全面了解学习kafka的培训学习资料。转载请注明出处 : 本文链接1.1 背景历史当今社会各种应用系统诸如商业、社交、搜索、浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战:如何收集这些巨大的信息如何分析它如何及时做到如上两点以上几个挑战形成了一个业务需求模型,即生产者转载 2016-09-27 11:56:07 · 757 阅读 · 1 评论 -
Netty线程模型详解
1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2. 多线程随着硬件性能的提升,CPU的核数越来越越多,很多服务器标配转载 2016-09-27 11:59:35 · 514 阅读 · 0 评论 -
关于游戏服务端架构的整理
一个大型的网落游戏服务器应该包含几个模块:网络通讯,业务逻辑,数据存储,守护监控(不是必须),其中业务逻辑可能根据具体需要,又划分为好几个子模块。这里说的模块可以指一个进程,或者一个线程方式存在,本质上就是一些类的封装。 对于服务器的并发性,要么采用单进程多线程,要么采用多进程单线程的方式,说说两种方式的优缺点: 一、单进程多线程的服务器设计模式,只有一个进转载 2016-09-29 17:44:51 · 8649 阅读 · 0 评论 -
全球同服架构设计
作者:马剑飞链接:https://www.zhihu.com/question/31103751/answer/64631116来源:知乎著作权归作者所有,转载请联系作者获得授权。刚好做过几款类似的全球唯一服的服务器,就简单谈谈,不好莫怪。首先,游戏服务器是IO密集型服务器,它的主要瓶颈在网络IO,而不是CPU,这点要记住了。所以经常服务器问题都会出现在网络IO,带宽,转载 2016-09-29 17:53:32 · 2678 阅读 · 0 评论 -
Linux IO模式及 select、poll、epoll详解
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O用户空间与内核空间现在操作系统都是采转载 2016-09-29 17:59:45 · 513 阅读 · 0 评论 -
游戏服务器中的数据库异步操作技术和游戏数据的保存机制
在游戏服务器中,处理玩家登陆需要向数据库查询玩家的账号和密码,玩家上线和下线需要对玩家的角色数据从数据库中读取和保存。可以说,相对于游戏逻辑处理来说,数据库操作是一种相对很慢的操作,即便你通过使用多个线程多个数据库连接来提高数据库操作的处理能力,但是,在高并发高负载的服务器应用中,这样仍然会是相当的负载瓶颈。设想这样一种设计方案,见下图: 在大量玩家登陆游戏服务器时,由于有大量的数据转载 2016-11-14 18:02:08 · 764 阅读 · 0 评论 -
Java分布式应用技术架构介绍
分布式架构的演进系统架构演化历程-初始阶段架构初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用MySQL,汇集各种免费开源软件以及一台廉价服务器就可以开始系统转载 2016-11-26 16:15:29 · 481 阅读 · 0 评论 -
关于PRC框架
作者:用心阁链接:https://www.zhihu.com/question/25536695/answer/36197244来源:知乎著作权归作者所有,转载请联系作者获得授权。关于RPC你的题目是RPC框架,首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一转载 2016-11-26 17:00:58 · 1723 阅读 · 0 评论 -
分布式服务框架HSF学习 Dubbo VS HSF
HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础:1.标准Service方式的RPC 1)、Service定义:基于OSGI的Service定义方式 2)、TCP/IP通信: IO方式:nio,采用mina框架 连接方式:长连接 服务器端有限定大小的连接池 WebService方式 3)、序列化:H转载 2016-11-26 17:55:28 · 7623 阅读 · 2 评论 -
淘宝HSF服务的原理以及简单的实现
淘宝HSF服务具体来说分三个应用:api接口,service服务,本地应用。 最基本的Api服务应该是十分干净的,不含方法,只有接口。它是要被打包(jar包的形式)到中央仓库去的。 service服务是api接口的实现,它是要被打包成(最常见的是war包)安装到远程tomcat,或jboss中,作为服务要随时等待各种应用的调用的。 本地应用自然是各种转载 2016-11-26 18:09:21 · 673 阅读 · 0 评论 -
CentOS 7 源码安装 mysql5.7.12 完整教程
一:卸载旧版本MySQL使用下面的命令检查是否安装有MySQL Serverrpm -qa | grep mysql有的话通过下面的命令来卸载掉rpm -e mysql //普通删除模式rpm -e --nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除二:安装新版本MySQL安装编译代原创 2016-05-17 19:32:14 · 10285 阅读 · 5 评论 -
CentOS7 MongoDB 3.2.6 安装以及自启动配置
#1.安装openssl#yum install -y openssl-devel openssl#2.下载MongoDBcd /usr/local/srcwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.6.tgz#3.解压MongoDBtar xvf mongodb-linux-x原创 2016-05-17 16:46:59 · 3695 阅读 · 10 评论 -
Linux redis 3.2环境搭建以及开机启动配置
http://redis.io/download原创 2016-05-16 10:29:39 · 1179 阅读 · 0 评论 -
架构解耦
转载:http://blog.chinaunix.net/uid-26443921-id-3409745.html的开发来说都是知道的,实际开发中也会或多或少的解除或者使用过;但系统架构之间的解耦恐怕一般人很少接触,换种说法就是一般人很少有架构解耦的概念和思想;一方面是因为很少有书文章讲怎样做架构,恐怕也很难做架构,另外一方面一个项目中真正做全局架构的人一般只有一个,很多人根本接触...转载 2019-01-17 09:09:56 · 957 阅读 · 0 评论 -
Netty 实现原理
Netty是JBoss出品的高效的Java NIO开发框架,关于其使用,可参考我的另一篇文章 netty使用初步。本文将主要分析Netty实现方面的东西,由于精力有限,本人并没有对其源码做了极细致的研 究。如果下面的内容有错误或不严谨的地方,也请指正和谅解。对于Netty使用者来说,Netty提供了几个典型的example,并有详尽的API doc和guide doc,本文的一些内容及图示也来自于转载 2016-09-27 11:03:00 · 621 阅读 · 0 评论 -
多线程高并发经验
高并发下,接受数据是来不急处理的,会导致阻塞。建议用专门的线程接收数据。不负责处理,放在队列里面。然后有专门的线程去处理,把接收和处理分开。这是基本原则。如果处理数据过程太慢而队列里堆积过多,就需要监测队列大小,如果过大,就启动多个线程。至于启动多少线程,可以写算法优化。记得空闲时关闭。作者:haowei wu链接:https://www.zhihu.com/quest转载 2016-10-11 14:49:03 · 1361 阅读 · 0 评论 -
Netty系列之Netty高性能之道
目录[-]1. 背景1.1. 惊人的性能数据数据分析与企业架构京东618大促下的数据驱动个性化推荐如何构建软硬件结合的人工智能产品研发体系中国创新型互联网企业走向海外的技术机遇与挑战LinkedIn成员分类平台大数据应用的最佳实践1.2. Netty基础入门2. Netty高性能之道2.1. RPC调用的性能模型分析2.1.1. 传统RPC调用性能差的三宗罪2.1.2. 高性能的三个主题2转载 2016-05-04 20:14:34 · 832 阅读 · 0 评论 -
Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的工作原理以及与 Tomcat 的比较Jetty 应该是目前最活跃也是很有前景的一个 Servlet 引擎。本文将介绍 Jetty 基本架构与基本的工作原理:您将了解到 Jetty 的基本体系结构;Jetty 的启动过程;Jetty 如何接受和处理用户的请求。你还将了解到 AJP 的一些细节:Jetty 如何基于 AJP 工作;以及 Jetty 如何集成到 Jboss;最后转载 2016-05-11 15:10:42 · 936 阅读 · 0 评论 -
Jetty服务器的安装配置详解
Jetty服务器的安装配置详解 Jetty是一个开源的Servlet容器和应用服务器,它极度轻量级、高便携性、功能强大、灵活和扩展性好,而且支持各种技术如SPDY、WebSocket、OSGi、JMX、JNDI和JAAS。Jetty对于开发来说非常便利,也已经广泛地应用于生产环境。本文详述如何安装和配置Jetty服务器,主要讲述Jetty的独立运转载 2016-05-11 17:34:44 · 1628 阅读 · 0 评论 -
Spring 简述
spring 是是一个开源框架,是为了解决企业应用程序开发,功能如下◆目的:解决企业应用开发的复杂性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能◆范围:任何Java应用简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。◆轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的J转载 2016-05-12 10:51:46 · 666 阅读 · 0 评论 -
同步与异步的概念
进程同步用来实现程序并发执行时候的可再现性。 一.进程同步及异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特转载 2016-05-26 09:56:43 · 489 阅读 · 0 评论 -
Unity3D客户端和Java服务端使用Protobuf
分类:Unity3D游戏开发Java基础 前几天有位网友问我关于Unity3D里面使用Protobuf的方法,一时有事拖到现在才写这篇文章,不好意思哈。本文测试环境:系统:WINDOWS 7(第3、6步)、OS X 10.9(第4步)软件:VS 2012(第3、6步)、Eclipse(第5、6步)硬件:iPad 2(第4步)、Macbook Pro Mid 2012(第转载 2016-05-26 14:19:30 · 1945 阅读 · 0 评论 -
基于Netty5.0高级案例二之WebSocket中关于使用ProtoBuf传输数据介绍js部分
基于Netty5.0高级案例二之WebSocket中关于使用ProtoBuf传输数据介绍js部分前言介绍: 本案例主要介绍如何在js里把接收到的protobuf数据转换为对象与如何把对象转换为protobuf数据。为了能简单说明问题,在本案例中只有js部分,关于后台服务的像前台发送数据部分在案例一中已经介绍。环境需求: 需要github大神wiki提供的三个js转载 2016-05-26 12:00:02 · 3761 阅读 · 7 评论 -
netty 二进制简单通信
环境:netty版本4.0.36Finaljdk7服务端:1.App.javapackage com.mind.core;import com.mind.core.net.websocket.server.NettyServer;/** * Hello world! * */public class App { public static void原创 2016-05-25 19:30:01 · 6782 阅读 · 1 评论 -
Linux memcached 环境配置
参考地址:http://memcached.org/downlo #设置下载路径 cd /usr/local/src #下载 wget http://memcached.org/files/memcached-1.4.25.tar.gz #解压 tar xzf memcached-1.4.25.tar.gz #编译到指定原创 2016-05-17 10:46:10 · 622 阅读 · 0 评论 -
使用 Netty 进行 UDP 网络编程
使用 Netty 进行 UDP 网络编程 在正式开始之前,首先介绍一下TCP和UDP协议。对于做过网络开发的朋友来说,这两个协议应该都不陌生,在此仅摘录网上对两个协议的介绍给大家,仅供参考。TCP与UDP区别 TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重转载 2016-06-03 16:03:18 · 1412 阅读 · 0 评论 -
异步,同步,阻塞与非阻塞
序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?在弄清楚上面的几个问题之前,我们首先得明白什么是同步,异步,阻塞,非阻塞,只有这几个单个概念理解清楚了转载 2016-06-03 18:08:53 · 497 阅读 · 0 评论 -
websocket 断线重连
摘要websocket reconnectwebsocket是html5发布之后出现的一种新技术,说它是新技术,其实也不是多新的技术了,因为毕竟也有2-3年了,但是找了很多国内的实例,缺发现不多,不知道是它不好用呢,还是说这种技术原来就有缺陷呢,咱们暂且不说,今天我们就来介绍一下websocket的断线重连,,,,这里先提供一个类库,https://github.com/j原创 2016-07-14 13:28:11 · 9238 阅读 · 2 评论 -
棋牌游戏服务器架构: 总体设计
首先要说明的是, 这个棋牌游戏的服务器架构参考了网狐棋牌的架构。网狐棋牌最令人印象深刻的是其稳定性和高网络负载。它的一份压力测试报告上指出:一台双核r的INTEL Xeon 2.8CPU加上2G内存和使用共享100M光纤的机子能够支持5000人同时在线游戏。 在研究其服务器框架后发现,它的网络部分确实是比较优化的。它主要采用了Windows提供的IO完成端口来实现其网络组件。本服转载 2016-07-14 10:40:20 · 2536 阅读 · 0 评论 -
Postgresql源码分析: 动态Hash
1. 为什么需要动态hash 平常的hash,大多是下面这样一副面孔: 图1 一个静态hash结构 这种Hash维护着一些桶,就是图上左边的部分,每一个桶中装着hash值相同的数据。这些具有相同hash值的数据形成一个链表。转载 2016-07-14 11:59:59 · 1073 阅读 · 0 评论 -
帧同步游戏开发基础指南
最近一个月休了个假,体验了一下类似欧洲的田园生活。所以更新几乎荒废了,但是总结和积累是一直持续着的。根据前一阶段对于实时对战游戏的开发思考,写了这一篇入门级的文章,希望能记录下自己的想法。什么游戏适合帧同步这种技术?在现代多人游戏中,多个客户端之间的通讯,多以同步多方状态为主要目标。为了实现这个目标,主要有两个方向的技术:一种叫状态同步:客户端发送游戏动作到服务器,服务转载 2016-08-05 10:09:42 · 4216 阅读 · 0 评论 -
pvp 游戏如何解决玩家匹配等待时间过长的问题
按局打的纯 PVP 机制的游戏,面临最大的问题将是,在一个玩家想找人对战的时候,找不到对手匹配。如果游戏的在线玩家达不到一定人数,那么这个问题会恶化:等不到人和你一起玩、放弃等待、新的玩家更找不到对手。像皇室战争、王者荣耀、炉石传说这些火爆的 pvp 游戏都属于迈过了线的作品,玩家不太愁等不到人一起玩,提升了游戏体验,聚集了更多的玩家。而当玩家群有限时,同类产品就很难竞争,只要在线用户掉到转载 2016-08-31 15:39:46 · 1881 阅读 · 0 评论 -
什么是耦合、解耦
一、耦合1、耦合是指两个或两个以上的体系或两种运动形式间通过相互作用而彼此影响以至联合起来的现象。2、在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。3、分类:有软硬件之间的耦合,还有软件各模块之间的耦合。耦合性是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及...转载 2019-09-18 11:07:36 · 540 阅读 · 0 评论