被世界遗弃的江的博客

我正在城楼观山景, 耳听得城外乱纷纷。

排序:
默认
按更新时间
按访问量

Netty游戏服务器实战开发(9):利用redis或者zookeeper实现3pc分布式事务锁(三)。支撑腾讯系列某手游百万级流量公测

导读:在编写前面两篇文章的时候,博主其实已经把这个项目做完了,应为不可能一边写文章,一遍写项目。所以我都是把项目做完之后然后通过自己测试之后确保没有问题就来编写文章。 在上面的介绍中我们已经了解到如何利用redis或者是zookeeper来实现分布式事务锁,也了解了分布式所务锁的基本原理已经2pc...

2018-10-12 11:18:53

阅读数:57

评论数:0

Netty游戏服务器实战开发(8):利用redis或者zookeeper实现3pc分布式事务锁(二)。支撑腾讯系列某手游百万级流量公测

导读:在上篇文章中介绍了分布式事务项目的基本原理和工程组件,我们了解到了分布式事务的理论知识。处于实战的经验,我们将理论知识使用到实际项目中。所以我们将利用idea 来实战我们的项目。 回到正文: 在上篇文章中我们已经把需要的准备工作做好了。现在我们需要将如何实现分布式3pc ...

2018-10-10 12:14:49

阅读数:89

评论数:0

Netty游戏服务器实战开发(7):利用redis或者zookeeper实现3pc分布式事务锁(一)。支撑腾讯系列某手游百万级流量公测

引导:博主在跳槽之前在一家和腾讯合作的游戏厂商做手游服务器开发,在那学习到很多有关腾讯的开发规范和知识。此文的部分知识就是在那学习到的。 正文: 在分布式系统中,我们实现对临界资源加锁的方式不能像在独立进程中使用jdk自带的锁的方式进行加锁了。我们需要夸进程加锁,所以实现的是分布式事务锁。对于分布...

2018-10-08 16:53:15

阅读数:63

评论数:1

Netty游戏服务器实战开发(2):ByteBuf - 字节数据的容器

目錄 Introduction 开始 Netty-异步和数据驱动 Netty 介绍构成部分关于本书 第一个 Netty 应用设置开发环境 Netty 客户端/服务端 总览写一个 echo 服务器 写一个 echo 客户端 编译和运行 Echo 服务器和客户端总结 Netty 总览...

2018-05-10 17:50:00

阅读数:407

评论数:0

Netty游戏服务器实战开发(6):Netty整合Zookeeper实现分布式服务发现与注册

1:Zookeeper基础 安装zookeeper。当然,很多时候我们会在Windows上开发,所以,我们需要在本地搭建一个zookeeper环境。方便开发过程中的测试。 首先我们去Apache上下载zookeeper。https://zookeeper.apache.org/ 下载下来后解...

2018-09-19 11:52:34

阅读数:109

评论数:0

Netty游戏服务器实战开发(5):利用Netty打造轻量级RPC组件

简介:什么是RPC? RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能...

2018-09-18 12:34:43

阅读数:73

评论数:1

Netty游戏服务器实战开发(4):自定义消息池化处理

通过上篇《Netty实战开发(3):自定义消息》我们都知道,客户端发送过来的消息我们服务器通过自定义编解码实现解析每条消息,并且做对应的处理,但是上篇介绍的重点是消息的编解码,接下来我们介绍消息的处理,并且利用线程池化技术实现消息队列处理。 首先我们来复习一下线程池模型。...

2018-08-26 15:39:06

阅读数:65

评论数:0

Netty游戏服务器实战开发(3):自定义私有协议栈

自定义私有协议栈开发,其实就是自己封装一套符合自定义数据包结构的编码器和解码器,从而满足我们的业务需求。 通常我们数据包拆分,一部分为包头,一部分为包体,一个数据包就有两部分构成。 如图所示 对于数据包,我们进行细化,每个部分都有很多基本元素组成,利用这些基本元素,我们能够实现通过解析数...

2018-07-31 14:50:40

阅读数:64

评论数:0

exclusions来进行排除依赖

xclusions 但依赖调节并不解决所有问题,我们还需要exclusions来进行排除依赖。 例如这样一个情况,工程中引入了A,A依赖B,但是B的版本过旧。 此时可以使用exclusions排除该传递性依赖,并显示声明一个最新版本的B依赖。 比如这样: &a...

2018-07-02 11:28:29

阅读数:74

评论数:0

Netty游戏服务器实战开发(1):Netty 的自带解码器

LineBasedFrameDecoder LineBasedFrameDecoder是回车换行解码器,如果用户发送的消息以回车换行符作为消息结束的标识,则可以直接使用Netty的LineBasedFrameDecoder对消息进行解码,只需要在初始化Netty服务端或者客户端时将LineBas...

2018-05-16 15:36:22

阅读数:284

评论数:0

深入学习理解(9):java:AbstractQueuedSynchronizer详解

导读: 前一阵子在写轻量级RPC框架的时候,由于系统中所需要用异步RPC模型,由于系统所要求性能比较苛刻,所以基本所有耗时的操作都会采用异步调用的方式:比如异步读写DB,IO,更可能redis的操作都需要异步(主程说了,我咋办,做呗)。 基于Netty的轻量级rpc框架已经开源,想去了解的小伙...

2018-10-01 16:18:25

阅读数:27

评论数:0

微服务架构设计基础-(1)微服务方法论和文化

微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来讨论的问题是如何在保持服务尽可能自主的同时实现微服务之间的耦合。在这里,将描述四个选项,并在结论中选择一个明确最好的方式。 对我来说,微服务是一种自主服务,它对一项业务能力负全部责任。...

2018-09-19 10:16:40

阅读数:35

评论数:0

微服务架构设计基础-(2):微服务架构的特性

导读: 天下大势,分久必合合久必分。软件也是一样。 微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来说一下微服务架构的特性。让我们学习微服务不在迷茫。 特性 1. 单一职责 微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低...

2018-09-25 14:03:14

阅读数:28

评论数:0

深入学习理解(8):java-ThreadLocal详解

ThreadLocal是什么?有什么用?怎么用? 1。ThreadLocal是什么 带着这样的问题我们来学习一下java并发编程中的一个重要的角色分子ThreadLocal。 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程...

2017-02-23 16:05:20

阅读数:3465

评论数:6

深入学习理解(7):java:高效的解决死锁问题的线程通讯方式:Semaphore 和 BlockingQueue

经典原始问题:生产者和消费者的问题,其实在实际项目中很容易遇到这样的无奈的问题,但是面对这样的问题的时候我们首先想到的就是多线程批处理,通过notify()…………的处理,但只这样的处理只能给我们贴上对java多线程不熟悉的标签。比较赞的办法是用Semaphore 或者 BlockingQueue...

2017-02-23 18:45:48

阅读数:1041

评论数:0

深入学习理解(6):java:CountDownLatch详解

今天在公司学习看到了它,翻一番文档,正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,...

2016-11-12 15:33:43

阅读数:4602

评论数:4

深入学习理解(5):java:并发容器之CopyOnWriteArrayList

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实...

2016-10-23 16:56:22

阅读数:210

评论数:0

深入学习理解(4):java :ExecutorService中submit和execute的区别

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。 一、创建任务任务就...

2016-06-27 17:59:07

阅读数:884

评论数:0

深入学习理解(2):java 并发学习之ExecutorService

在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性 一、创建任务 任...

2016-06-24 09:33:48

阅读数:1236

评论数:0

深入学习理解(3):java:CompletionService解决ExecutorService的submit方法的缺点

在ExecutorService的submit方法中可以获取返回值,通过Future的get方法,但是这个Future类存在缺陷,Future接口调用get()方法取得处理后的返回结果时具有阻塞性,也就是说调用Future的get方法时,任务没有执行完成,则get方法要一直阻塞等到任务完成为止。 ...

2016-06-27 17:49:01

阅读数:2518

评论数:2

提示
确定要删除当前文章?
取消 删除