进程、线程、多线程 2020-02-27 操作系统、进程、线程之间的关系 操作系统是包含多个进程的容器,而每个进程又都是容纳多个线程的容器。 进程:使用 fork(2) 系统调用创建的 UNIX 环境(比如:文件描述符,用户 ID 等),它被设置为运行程序。 进程就是代码的实例化对象。是资源分配的基本单位。 线程:在进程上下文中执行的一系列指令。 Windows 下查看进程下所有线程 PsList v1.4 * 然后将解压后的 pslist.exe 复制到 C:\Windows\System32 文件夹下 * 执行 PSlist -dmx PID (用来查看指定进程下有哪些线程) * windows10 可以启动 资源监视器 来查看 java.exe进程的线程数 模拟线程 /** * 创建 100 个线程,用任务管理器的CPU栏目看Java线程数量的变化,10秒钟后线消失。 */ public class Create100Threads { public static void main(String[] args) { for (int i = 0; i < 100; i++) { new Thread(n....
线程生命周期 2020-03-01 线程状态转换机 NEW:已经创建但还没启动的新线程。已经做了准备工作,但还没有调用 start()方法。 RUNNABLE:处于可运行状态的线程正在 JVM 中执行,但它可能正在等待来自操作系统的其他资源,例如处理器。 # Java 中的 RUNNABLE 状态对应操作系统中的两种状态 * Ready:等待分配CPU时间片。 * Running:执行中。 BLOCKED:进入 synchronized 修饰的代码块或方法,等待获取 monitor 锁之后进入 RUNNABLE。 WAITING:Object.wait()、join()、 LockSupport.park(),进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。 TIME_WAITING:Object.wait(time)、Thread.join(time)、LockSupport.parkNanos(time)、LockSupport.parkUntil(time),该状态不同于 WAITING,它可以在指定的时间内自行返回。 TERMINATED:表示该线程已经执行完毕。 BLOCKED 与 ....
Nacos 2020-02-22 简介 一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Reference 功能 动态服务配置 服务发现和管理 动态 DNS 服务 快速入门 通过 Docker 启动 Nacos docker pull nacos/nacos-server docker run --name nacos -d -p 8848:8848 -e MODE=standalone nacos/nacos-server 登录页面 http://192.168.31.201:8848/nacos/#/login 用户名密码为 nacos Provider 端 依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependencyManagement> <de....
运行中的 SpringBoot 2020-02-22 认识 Spring Boot 的各类 Actuator Endpoint Actuator 目的:监控并管理应用程序 访问方式 HTTP JMX 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 一些常用的 Endpoint 如何访问 Actuator Endpoint HTTP 访问 /actuator/<Actuator ID> 端口与路径(配置 Actuator 发布的端口 和 应用程序分开,实现应用与管理的隔离,例如:应用发布在 8080 端口,Actuator 相关的所有 Endpoint 发布在 8090 端口,前段 nginx 请求转发给 8080 端口,外部请求不允许直接访问 8090 端口,起到了保护作用。) • management.server.address= •....
Consul 2020-02-21 Consul “Consul is a distributed, highly available, and data center aware solution to connect and confifigure applications across dynamic, distributed infrastructure.” - Reference 关键特性 服务发现 健康检查 KV 存储 多数据中心支持 安全的服务间通信(以加密的方式完成应用间的交互) 使用 Consul 提供服务发现能力 HTTP API (以HTTP的方式做服务的注册于发现,类似Eurak) DNS( xxx.service.consul ) 与 Nginx 联动,比如 ngx_http_consul_backend_module 通过 Docker 启动 Consul docker pull consul docker run --name consul -d -p 8500:8500 -p 8600:8600/udp consul Provider 端 依赖 <dependency&....
Spring Cloud & Cloud Native 概述 2020-02-20 简单理解微服务 “微服务就是⼀些协同工作的小而自治的服务。” – Sam Newman 小:相对于单体服务。 自治:相对内聚性更强。 微服务的优点 易购性:语言、存储…… 弹性:一个组件不可用,不会导致级联故障。 扩展:单体服务不易扩展,多个较小的服务可以按需做横向扩展。(细粒度扩容性能瓶颈的服务) 易于部署 与组织结构对齐(每个服务对应独立的团队,职责更加清晰分明) 可组合性(整个业务链路是由多个微服务相互配合完成) 可替代性(升级改造时,可以用一个服务代替另外一个服务) 实施微服务的代价 没有银弹!!! 分布式系统的复杂性(分布式系统之间的事务、最终一致性等……) 开发、测试等诸多研发过程中的复杂性 部署、监控等诸多运维复杂性 如何理解云原生 “云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。” – CNCF Cloud Native Defifinition v1.0 云原生应用要求 DevOps:开发与运维一同致力于交付高品质的软件服务于客户 *持续交付:软件的构建、测试和发布,要更快、更频繁、更稳定 微服务:以⼀....