栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Java学习手册(15天入门计划)

Java学习手册(15天入门计划)

本文主要记录学习过程和相关参考资料

学习目标:
熟练使用java语言;
了解springboot,redis,netty,mybatis等常用中间件;
了解JVM,类加载机制;
了解内存模型,多线程

Java学习手册
  • 第1-2天、Kafka,构建TB级异步消息系统
  • 其他相关:下载和使用IDEA

第1-2天、Kafka,构建TB级异步消息系统

10/2:牛客网就业项目,第5章 Kafka,构建TB级异步消息系统

1、BlockingQueue(接口)
通过一个阻塞队列来实现对生产者和消费者线程的管理,以降低系统资源的浪费。
阻塞队列在生产者与消费者之间建立了缓冲,提高了系统的性能

具体来说以点对点的方式,当队列满了的时候,阻塞生产者生产,此时生产者不会占用资源;当队列 为空的时候,阻塞消费者消费,此时消费者不会占用资源。

代码实现:

import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class hello {
    public static void main(String[] args) {
        BlockingQueue queue = new ArrayBlockingQueue(10);
        new Thread(new Producer(queue)).start();
        new Thread(new Consumer(queue)).start();
        new Thread(new Consumer(queue)).start();
        new Thread(new Consumer(queue)).start();
}

static class Producer implements Runnable{
    private BlockingQueue queue;

    public Producer(BlockingQueue queue){
        this.queue = queue;
    }
    @Override
    public void run() {
        try {
            for(int i = 0;i<100;i++){
                Thread.sleep(20);
                queue.put(i);
                System.out.println(Thread.currentThread().getName()+"生产:" + queue.size());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

static class Consumer implements Runnable{
    private BlockingQueue queue;

    public Consumer(BlockingQueue queue){
        this.queue = queue;
    }
    @Override
    public void run() {
        try{
            while(true){
                Thread.sleep(new Random().nextInt(1000));//0-1000随机取,消费者的消费能力没有生产者快
                queue.take();
                System.out.println(Thread.currentThread().getName() + "消费:" + queue.size());
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

}

2、Kafka入门

Kafka是一个分布式的流媒体平台(最好用的消息队列)
应用:消息系统,日志收集,用户行为跟踪,流式处理

特点:高吞吐量(对硬盘数据顺序读写,性能很高,高于对内存的随机读取),消息持久化(存到硬盘里,且硬盘价格比内存低,容量比内存大),高可靠性(分布式服务器,集成部署,一台服务器挂了还有另一台),高扩展性(服务器不够用了,可以加服务器)

它可以用来处理TB级别的数据,我们主要用它来发消息。

Broker(Kafka的单个服务器),Zookeeper(用来管理服务器集群),Topic(用来存放消息的位置),Offset(队列中的索引),Partition(Topic中的分区,为了提高容错率,多存数据),Leader Replica(主副本,处理请求,比如处理消费者的使用请求),Follower Replica(从副本,在分布式情况下,当主副本挂了的时候,从从副本中选择一个作为主副本)
下载安装Kafka:
第一步,访问kafka.apache.org

第二步、点击下载
这是一个清华的国内源,一个包里就包含了win和linux系统的版本。

第三步、直接解压即可

第四步、配置kafka
首先在/config中配置zookeeper properties文件和server.properties
①打开相应的安装位置

②server.properties

![在这里插入图片描述](https://img-blog.csdnimg.cn/812ea821dc0c498e93962dca87e08366.png#pic_center)

③zookeeper properties


配置完成!接下来可以参考官网上的QUICKSTART来实操一番。


第五步、启动kafka
cmd,首先用配置文件zookeeper.properties来执行zookeeper-server-start.bat文件

F:kafka_2.13-3.0.0>binwindowszookeeper-server-start.bat configzookeeper.prop
erties

相应的我们可以在F:kafka_2.13-3.0.0workdata目录中找到新创建的zookeeper文件。

然后用配置文件server.properties来执行kafka-server-start.bat文件

F:kafka_2.13-3.0.0>binwindowskafka-server-start.bat configserver.properties

然后执行下图的相关代码,实现生产者和消费者之间的线程通信.

使用kafka配置和启动的过程有些啰嗦,理解一下就可以。

其他相关:下载和使用IDEA

第一步、官网的社区版本就够用了
第二步、新建一个java项目,选择java,next即可

第三步、无需添加编译器,点击这两个按钮中的任意一个,直接运行即可。

持续更新…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/285700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号