
java架构
文章平均质量分 78
chuixue24
这个作者很懒,什么都没留下…
展开
-
Elasticsearch架构原理
1、Elasticsearch的节点类型在Elasticsearch主要分成两类节点,一类是Master,一类是DataNode。1.1 Master节点在Elasticsearch启动时,会选举出来一个Master节点。当某个节点启动后,然后使用Zen Discovery机制找到集群中的其他节点,并建立连接。discovery.seed_hosts: ["192.168.21.130", "192.168.21.131", "192.168.21.132"]并从候选主节点中选举出.原创 2022-03-29 14:05:57 · 6274 阅读 · 0 评论 -
Jetty线程模型
在近几年的开源Java容器市场上,Tomcat依旧保持在龙头老大的位置,其地位丝毫没有被撼动的迹象。与此同时Tomcat也因为架构臃肿结构复杂而饱受批评。作为Tomcat的另一款替代性的Java容器Jetty要比Tomcat简单很多,Jetty作为内嵌容器被开源社区广泛使用。基于Jetty之上有很多轻量级Java Web框架,比如著名的JFinal就是基于Jetty开发出来的。Jetty的线程架构模型非常简单,分为acceptors,selectors和workers三个线程池。acceptors负转载 2022-01-20 20:57:59 · 672 阅读 · 0 评论 -
MQ应用场景
应用解耦:提高系统容错性和可维护性异步提速:提升用户体验和系统吞吐量削峰填谷:提高系统稳定性MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。1.应用解耦2.异步提速3. 削峰填谷...原创 2021-11-10 12:59:04 · 302 阅读 · 0 评论 -
线程状态切换
线程线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模 型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程也会在操作系统里有 一个对应的线程。Java线程有多种生命状态:NEW,新建 RUNNABLE,运行 BLOCKED,阻塞 WAITING,等待 TIMED_WAITING,超时等待 TERMINATED,终结协程协程(纤程,用户级线程),目的是为了追求最大力度的发挥硬件性能和提升软件的速.原创 2021-10-08 12:58:05 · 384 阅读 · 0 评论 -
CPU局部性原理
在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。 时间局部性(Temporal Locality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。 比如循环、递归、方法的反复调用等。 空间局部性(Spatial Locality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。 比如顺序执行的代码、连续创建的两个对象、数组等。 举个空间局部性原则例子: 1 public class TwoDimensio原创 2021-10-04 11:29:11 · 791 阅读 · 0 评论 -
Servlet 3.0/3.1 中的异步处理
在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成, 而IO操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,在并发量越来越大的情况下,这将带来严重的性能问题。即便是像Spring、Struts这样的高层框架也脱离不了这样的桎梏,因为他们都是建立在Servlet之上的。为了解决这样转载 2021-04-29 12:26:19 · 290 阅读 · 0 评论 -
防雪崩利器:熔断器 Hystrix 的原理与使用
前言分布式系统中经常会出现某个基础服务不可用造成整个系统不可用的情况, 这种现象被称为服务雪崩效应. 为了应对服务雪崩, 一种常见的做法是手动服务降级. 而Hystrix的出现,给我们提供了另一种选择.服务雪崩效应的定义服务雪崩效应是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程.如果所示:上图中, A为服务提供者, B为A的服务调用者, C和D是B的服务调用者. 当A的不可用,引起B的不可用,并将不可用逐渐放大C和D时, 服务雪崩就形成了....转载 2021-04-28 14:56:53 · 266 阅读 · 0 评论 -
OpenJDK能替代Oracle JDK 吗
Oracle 要对JAVA收费了,许多人说可以用 OpenJDK替代,但这会对应用有影响吗?OpenJDK 项目主要基于 Sun 捐赠的 HotSpot 源代码。此外,OpenJDK 被选为 Java 的参考实现,由 Oracle 工程师维护。关于 JVM,JDK,JRE 和 OpenJDK 之间的区别,Oracle 博客帖子在 2012 年有一个更详细的答案:问:OpenJDK 存储库中的源代码与用于构建 Oracle JDK 的代码之间有什么区别?答:非常接近 - 我们的 Oracle JD转载 2021-01-02 18:26:33 · 7125 阅读 · 2 评论 -
大型网站电商网站架构案例和技术架构的示例
大型网站架构是一个系列文档,欢迎大家关注。本次分享主题:电商网站架构案例。从电商网站的需求,到单机架构,逐步演变为常用的,可供参考的分布式架构的原型。除具备功能需求外,还具备一定的高性能,高可用,可伸缩,可扩展等非功能质量需求(架构目标)。根据实际需要,进行改造,扩展,支持千万PV,是没问题的。本次分享大纲电商案例的原因 电商网站需求 网站初级架构 系统容量估算 网站架构分析 网站架构优化 架构总结电商网站案例,一共有三篇本篇主要说明网站的需求,网站初始架构,系统容量估算方法。转载 2020-10-21 09:54:56 · 1092 阅读 · 0 评论 -
分布式事务选型及对比
分布式事务产生的条件说到分布式事务,我们先来看看分布式事务的产生条件这里我们举一个栗子:当用户进行下单以后,会去调用派单服务进行派单,即向派单服务数据库中插入一条派单业务。 派单成功之后,订单服务在执行后面的业务代码中,报错了 此时订单服务事务回滚,而派单服务的事务已经提交了,导致了数据的不一致。此时,小伙伴可能有疑问:派单服务报错呢?会不会也产生分布式事务问题?实际上如果派单服务报错,会将执行结果返回给订单服务,订单服务执行相应的处理即可,并不会发生分布式事务。什么是分...转载 2020-08-19 10:02:08 · 1559 阅读 · 1 评论 -
分布式事务框架seata一(seata客户端)
Seata分TC、TM和RM三个角色,TC(Server端)为单独服务端部署,TM和RM(Client端)由业务系统集成。因此,客户端承担了TM和TM的角色。服务端见博文:https://blog.csdn.net/chuixue24/article/details/108071970本文为实现seata分布式事务中的AT模式。seata客户端——服务提供端执行脚本客户端也需要执行sql脚本:-- for AT mode you must to init this sql for原创 2020-08-18 20:16:18 · 1229 阅读 · 1 评论 -
分布式事务框架seata一(seata服务端)
seata官方地址:http://seata.io/zh-cn/index.htmlseata官方文档地址:http://seata.io/zh-cn/docs/overview/what-is-seata.html安装包下载地址:http://seata.io/zh-cn/blog/download.htmlgithub地址:https://github.com/seata/seata官方部署指南:http://seata.io/zh-cn/docs/ops/deploy-guide-be原创 2020-08-18 11:10:19 · 2323 阅读 · 0 评论 -
nacos简介以及作为注册/配置中心与Eureka、apollo的选型比较
一、Nacos简介Nacos是以服务为主要服务对象的中间件,Nacos支持所有主流的服务发现、配置和管理。Nacos主要提供以下四大功能: 服务发现与服务健康检查 Nacos使服务更容易注册自己并通过DNS或HTTP接口发现其他服务。Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求。 动态配置管理 动态配置服务允许您在所有环境中以集中和动态...转载 2020-05-07 10:30:37 · 542 阅读 · 0 评论 -
oauth2认证中心,单点登录活动图
原创 2020-04-28 15:17:07 · 1148 阅读 · 0 评论 -
领域建模详解
学会了面向对象的语法,却依然写不出面向对象的程序,因此我们需要了解如何从需求分析到面向对象设计这样一个过程。一,什么是领域模型领域建模。 从领域模型开始,我们就开始了面向对象的分析和设计过程,可以说,领域模型是完成从需求分析到面向对象设计的一座桥梁。顾名思义,就是显示最重要的业务概念和它们之间关系,是真实世界各个事物的表示(现实世界的可视化抽象字典)而不是软件中各构件的表示。(...转载 2020-03-23 16:32:39 · 10305 阅读 · 0 评论 -
如何通俗易懂地解释什么是SOA
作者:光太狼链接:https://www.zhihu.com/question/42061683/answer/251131634来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。对于SOA,感觉这个概念性的东西没那么容易理解,看了各位大神的解释感觉很多都说的很抽象,所以想尝试用自己的语言解释下,仅做参考。SOA粗暴理解:把系统按照实际业务,拆分...转载 2020-03-19 17:14:38 · 425 阅读 · 0 评论 -
如何画好架构图?
当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况: 对着画布无从下手、删了又来? 用一张图描述我的系统,并且让产品、运营、开发都能看明白? 画了一半的图还不清楚受众是谁? 画出来的图到底是产品图功能图还是技术图又或是大杂烩? 图上的框框有点少是不是要找点儿框框加进来? 布局怎么画都不满意…… 如果有同样的困惑,...转载 2020-03-18 11:17:04 · 261 阅读 · 0 评论 -
架构设计——5视图
原创 2020-03-18 10:11:22 · 349 阅读 · 0 评论 -
概念架构与细化架构
原创 2020-03-18 09:04:10 · 380 阅读 · 0 评论 -
架构设计——三个阶段一个贯穿
原创 2020-03-17 18:30:53 · 499 阅读 · 0 评论 -
JAVA—API和SPI概念
概念英文:What is the difference between Service Provider Interface (SPI) and Application Programming Interface (API)?More specifically, for Java libraries, what makes them an API and/or SPI?the API...转载 2020-03-10 14:15:40 · 164 阅读 · 0 评论 -
软件质量属性关键矩阵
原创 2020-03-10 11:48:01 · 248 阅读 · 1 评论 -
ISO9126软件质量模型
转载 2020-03-10 10:26:11 · 358 阅读 · 0 评论 -
项目应该如何正确分层
你的项目应该如何正确分层?如果喜欢微信阅读,想了解更多java知识,系统设计,分布式中间件等可以关注我的微信号: 咖啡拿铁,当然还有更多福利等着你。1.背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,servi...转载 2020-01-10 17:13:32 · 764 阅读 · 0 评论 -
几个集群的总结(二)dubbo
dubbo部分官方用户手册:http://dubbo.io/books/dubbo-user-book/注册中心:zookeeper。所以需要有一个zookeeper集群,zk集群节点数量为奇数2n+1,n>0。一般3台机子即可。Provider组:2+台机子Consumer组:2+台机子管控台:1台所以一共需要3+2+2+1=8台机子(最少的数目)。架构图如下:dubbo集群机构图需要注意...原创 2018-03-03 17:28:59 · 390 阅读 · 0 评论 -
几个集群的总结(三)keepalived①
keepalived打算分三篇来写,第一篇为keepalived的安装,第二篇为keepalived+nginx实现主从模式的高可用,第三篇为keepalived+nginx实现双主模式。本篇为keepalived第一篇:keepalived1.4.0安装启动卸载。(环境为CentOS6.4)keepalived官网:http://www.keepalived.org/keepalived1.2 ...原创 2018-03-03 17:32:15 · 557 阅读 · 0 评论 -
几个集群的总结(三)keepalived②
本篇总结利用keepalived来实现nginx主从模式下的高可用。环境:CentOS6.4、nginx-1.12.2、keepalived-1.4.0。场景:场景需求keepalived实现nginx高可用规划:节点规划实施nginx和keepalived都需要安装在129和130两个节点上。nginx的详细安装过程略过,keepalived安装见上一篇keepalived①。两个关键点:1)k...原创 2018-03-03 19:38:10 · 1406 阅读 · 0 评论 -
几个集群的总结(三)keepalived③
上篇总结了Nginx+keepalived 主从配置:这种方案,使用一个vip地址,前端使用2台机器,一台做主,一台做备,但同时只有一台机器工作,另一台备份机器在主机器不出现故障的时候,是处于浪费状态的,对于服务器不多的网站,该方案不经济实惠。本篇总结Nginx+keepalived 双主配置:这种方案,使用两个vip地址,前端使用2台机器,互为主备,同时有两台机器工作,当其中一台机器出现故障,两...原创 2018-03-03 22:52:08 · 343 阅读 · 0 评论 -
分布式事务解决方案
分布式事物总体有两类方案:①刚性方案,全局事物(标准的分布式事物)如二阶段提交协议。【尽量保证了数据的强一致,适合对数据强一致要求很高的关键领域。实现复杂,牺牲了可用性,对性能影响较大,不适合高并发高性能场景】②柔性方案:1)可靠消息最终一致性(异步确保型)2)TCC (Try-Confirm-Cancel)(补偿型)3)最大努力通知(非可靠消息,定期校对)4)纯补偿型以下是柔性方案中的几个实现:...原创 2018-04-16 22:48:46 · 227 阅读 · 0 评论 -
mysql高可用
转载 2018-04-16 22:49:53 · 241 阅读 · 0 评论 -
几个集群的总结(一)solrCloud
总结下常用的几个集群,大概会涉及SolrCloud、Redis、FastDFS、Dubbo、消息中间件(ActiveMq,RocketMq)。 ——吹雪SolrCloud部分SolrCloud环境:zookeeper-3.4.10,solr-7.0.1-2SolrCloud架构图为下图左侧,右...原创 2018-03-03 17:26:15 · 3870 阅读 · 0 评论