Category: Java Architecture

[转]分层架构设计 – 4 前后端分离 0

[转]分层架构设计 – 4 前后端分离

通用业务服务化之后,系统的典型后端结构如上: web-server通过RPC接口,从通用业务服务获取数据 biz-service通过RPC接口,从多个基础数据service获取数据 基础数据service通过DAO,从独立db/cache获取数据 db/cache存储数据   随着时间的推移,系统架构并不会一成不变,业务越来越复杂,改版越来越多,此时web-server层虽然使用了MVC架构,但以下诸多痛点是否似曾相识?

[转]分层架构设计 – 3 通用业务服务化 0

[转]分层架构设计 – 3 通用业务服务化

《互联网分层架构的本质》简述了两个观点: 互联网分层架构的本质,是数据的移动 互联网分层架构演进的核心原则:是让上游更高效的获取与处理数据,让下游能屏蔽数据的获取细节   《分层架构:什么时候抽象DAO层,什么时候抽象数据服务层》中的观点是: 当手写代码从DB中获取数据,成为通用痛点的时候,就应该抽象出DAO层,简化数据获取过程,提高数据获取效率,向上游屏蔽底层的复杂性 当业务越来越复杂,垂直拆分的系统越来越多,数据库实施了水平切分,数据层实施了缓存加速之后,底层数据获取复杂性成为通用痛点的时候,就应该抽象出数据服务层,简化数据获取过程,提高数据获取效率,向上游屏蔽底层的复杂性

[转]系列 – 从单体式应用到微服务的低风险演变 0

[转]系列 – 从单体式应用到微服务的低风险演变

http://blog.christianposta.com/microservices/low-risk-monolith-to-microservice-evolution/ http://blog.christianposta.com/microservices/low-risk-monolith-to-microservice-evolution-part-ii/ http://blog.christianposta.com/microservices/low-risk-monolith-to-microservice-evolution-part-iii/     讲讲拆分:从单体式应用到微服务的低风险演变 从单体式应用到微服务的低风险演变 II

0

[总结]数据库解耦和拆分

随着业务越来越复杂,数据量越来越大,并发量越来越大,数据库的性能越来越低。好不容易找运维申请了两台机器,让DBA部署了几个实例,想把一些业务库拆分出来,却发现拆不出来,扩不了容,尴尬! 因为数据库强关联在一起,无法通过增加数据库实例扩容,就是一个耦合的典型案例。

0

[转]如何诊断Java代码中常见的数据库性能热点问题?

1. 写在前面 当我在帮助一些开发者或架构师分析及优化 Java 应用程序的性能时,关键往往不在于对个别方法进行微调,以节省一或两微秒的执行时间。虽然对某些软件来说,微秒级的优化确实非常重要,但我认为这并非着眼点所在。我在 2015 年间对数百个应用进行了分析,发现多数性能与可伸缩性问题都来源于糟糕的架构决策、框架的错误配置、错误的数据库访问模式、过量的日志记录,以及由于内存过度消耗而导致的垃圾回收所带来的影响。

0

[转]苏宁穆加如何实现监与控的结合

  1. 一、背景 在当今互联网时代,企业大都采用分布式系统设计和微服务化,内部关系错综复杂,各产品分散,集成度不高。虽有众多日志监控工具,但没有全链路监控,定位问题及根因分析耗时长。同时由于缺乏决策并自动控制(自愈)机制,基本靠人工来排查处理,面对大规模高并发的场景时,对数据中心的性能、安全、稳定性影响缺乏量化,合理性规划时也很难兼顾性能与稳定性、可用性。 此前苏宁已有穆加服务端性能监控(以下简称 Baymax)、穆加调用链监控(以下简称 HIRO)等产品,但这仅仅是在“监”的层面上去主动发现系统出现的一些问题,而没有对解决这些问题做出“控”的动作。基于此,我们研发了穆加决策分析平台(以下简称 ZEUS),它将打通苏宁内部所有的监控渠道,真正意义上使得监控系统具备“控”的能力,通过与运维系统联动,达到系统问题自愈的效果,实现“监”与“控”完美结合。

[转]一千个不用 Null 的理由 0

[转]一千个不用 Null 的理由

港真,Null 貌似在哪里都是个头疼的问题,比如 Java 里让人头疼的 NullPointerException,为了避免猝不及防的空指针异常,千百年来程序猿们不得不在代码里小心翼翼的各种 if 判断,麻烦而又臃肿,为此 java8 引入了 Optional 来避免这一问题。 下面咱们要聊的是 MySQL 里的 null,在大量的 MySQL 优化文章和书籍里都提到了字段尽可能用NOT NULL,而不是NULL,除非特殊情况。但却都只给结论不说明原因,犹如鸡汤不给勺子一样,让不少初学者对这个结论半信半疑或者云里雾里。本文今天就详细的剖析下使用 Null 的原因,并给出一些不用 Null 的理由。