我想是时候做一个回顾和展望了。这篇文章会先回顾我从入行至今的一些关键点,然后讲一下经过这些年,我对软件开发的认知变化,最后分享一下后面的规划。# 回顾> 人太容易在琐碎生活中迷失,我们总是需要记住... 解决问题后及时沉淀、分享**的习惯,受益匪浅。### 2015~2017:明白项目迭代的全流程在学习安卓开发时,我先看了一本明日科技的《Android 从入门到精通》,然后看了些校内网的视频,逐渐可以做一些简单的应用。安...
容器化和容器编排:容器化是将应用程序及其依赖项打包到一个独立的单元中,称为容器。容器可以在不同的环境中运行,并提供了隔离、可移植和一致性的好处。容器编排工具(如Kubernetes)可以管理大规模容器集群的部署... 通过将系统各个组件之间的通信基于事件进行解耦,实现松耦合的异步通信。当事件发生时,相关组件可以根据需要采取适当的操作。这种架构具有高扩展性、松耦合性和适应性,特别适用于实时数据处理和事件驱动的场景。- ...
难免会碰到一些 性能 问题,这时候就需要一些工具,帮忙排查- 本文主要介绍 JDK自带的上古神器 jstat、jmap,用于分析内存问题,另简单介绍 MAT、gceasy、HeapDump 等- 以 openjdk 11.0.13、G1 垃圾收集器、Linux系统... 用于对 Java 程序的资源和性能进行监控,包括 Heap size、垃圾回收状况 等。- jstat --help:查看命令帮助- jstat -options:返回有哪些命令选项,如 -gcutil、-gc、-gccapacity、-gccause,另有 -class、-compiler、...
AS 的 Realtime Profilers 工具可以帮助我们在如下四个方面监测和发现问题,有的时候在没有其他 App 代码的情况下通过 Memory Profilers 还可以查看其内部的实例和变量细节。* CPU:性能剖析器检查 CPU 活动,切换到 Frames 视图还可以**界面卡顿追踪*** Memory:识别可能会导致应用卡顿、冻结甚至崩溃的内存泄漏和内存抖动,可以捕获堆转储、强制执行垃圾回收以及跟踪内存分配以定位**内存方面的问题*** Battery:会监控 CP...
已经被广泛应用到不少领域,随着使用场景的发展,一些性能相关的问题也开始逐渐暴露出来。本次分享将以字节跳动的性能优化工作为例,介绍基于 Go 生态的微服务体系下,分析系统性能、优化不同层次软件以提升运行性能、... 程序启动也很迅速,同时具有还算不错的运行时性能。当然,世上没有完美的事物。从性能角度来看,微服务也为字节跳动基础架构团队带来了两个性能代价:**通信代价** ,不同服务之间通过网络进行通信,用户必须压缩数据...
解决了基于事件时间处理时的数据乱序和数据迟到的问题。- Window:提供了一套开箱即用的窗口操作,如滚动窗口、滑动窗口、会话窗口,支持非常灵活的自定义窗口满足特殊业务需求。- 带反压的流模型Flink是采用... flink基于jvm实现了独立的内存管理:可超出主内存的大小限制、承受更少的垃圾回收开销、对象序列化二进制存储,下面在来详细介绍下flink内存管理。## 完全JVM内存管理存在的问题基于JVM的数据分析引擎都需要面对...
那么这个时候,我们显然不能够再继续采用原有写死 IP 的方式来进行 7 层代理的维护了。由于服务 IP 的不确定性,我们必须要改变姿势,不能由人为填充 Nginx 的 upstream 的 server ip 的方式,只能通过动态的获取和变更,这个就需要 LB 能够主动发现后端服务并且动态更新* Kubernetes 的容器化平台下,集群内部的网络是虚拟的,虚拟网络的 IP 在集群外部是无法访问的,因此还需要解决好容器集群内外的网络互通问题。## 二,容器 LB 负...
小程序、Web等各种线上应用时产生的行为,主要通过埋点的形式进行采集上报,按不同的来源分为客户端埋点、Web端埋点、服务端埋点。不同来源的埋点都通过数据流的日志采集服务接收到MQ,然后经过一系列的Flink实时... 需要解决的是高稳定的SLA**。因为断流、数据延迟可能会影响推荐效果、广告收入、实时数据报表。同时随着业务发展,实时数据需求日益增加,分流规则新增和修改也会日益频繁。如果每次规则变动都需要修改代码并重...
云原生后需要解决的核心问题是如何提高集群的资源利用效率;以典型的在线服务的资源使用情况为例,深蓝色部分是业务实际使用的资源量,浅蓝色部分为业务提供的安全缓冲区,即使增加缓冲区仍有很多资源处于业务已申请但未使用的状态。因此优化重点是从架构的角度尽可能地利用这些未使用的资源。![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/5d5fad0f06f14e12acc88c3627394a44~tplv-tlddhu82o...
小程序、Web等各种线上应用时产生的行为,主要通过埋点的形式进行采集上报,按不同的来源分为客户端埋点、Web端埋点、服务端埋点。不同来源的埋点都通过数据流的日志采集服务接收到MQ,然后经过一系列的Flink实时ET... **核心需要解决的是高稳定的SLA**。因为断流、数据延迟可能会影响推荐效果、广告收入、实时数据报表。同时随着业务发展,实时数据需求日益增加,分流规则新增和修改也会日益频繁。如果每次规则变动都需要修改代码并...
为企业提供了强大的解决方案。**文末更有专属彩蛋,新人优惠购福利,等着你来解锁!**本篇文章提纲如下:- Spark on K8S- Kyuubi:Spark SQL Gateway- CatalogService:湖仓一体元数据架构实践- LAS Batc... 来管理应用程序及其组件。Operator 遵循 Kubernetes 控制器的设计理念。Operator 模式的概念允许在不修改 Kubernetes 核心代码的情况下,通过为自定义资源关联控制器来扩展集群的功能。Operator 充当了 Kubernete...
而这些工具通常作为独立解决方案单独运行,以支持不同团队的特定需求。可观测性并非简单的数据堆砌,更重要的是将数据通过一定的关联纽带有机串联起来,而不同监控工具可能都有各自的元数据语义化标准,难以实现对齐统... 而无需更改内核源代码或加载内核模块,同时 eBPF 程序在加载的时候有严格的 Verifier 进行校验,可以确保代码的正确性,避免死循环或者非法内存访问等问题,这大大提高了内核拓展的**安全性**。![picture.image](htt...
应用,它的优势这主要体现在以下几点:- **可以信赖**:汇聚 Google 在 Android 行业十余年的前沿开发经验- **入门友好**:提供大量 Demo 和参考文档,适用于不同阶段不同规模的项目- **高效启动**:通过 Jepta... class HomeFragment : Fragment() { private val homeViewModel : HomeViewModel by viewModels() ... }```相对于 Java 代码在 Fragment 中创建 ViewMoel 变得极其简单,其背后的是现实活用了各种 Kot...