Featured image of post Java工程师 Apache Dubbo 1 分布式概念入门

Java工程师 Apache Dubbo 1 分布式概念入门

🌏Java工程师 Dubbo框架 🎯 这系列文章用于记录 对Dubbo框架的系统学习和实践

🎄大型互联网架构目标

🍭传统项目(OA HR CRM)和互联网项目的区别

🔮传统项目(OA HR CRM)

OA(办公自动化)

OA系统的全称是“Office Automation System”,即办公自动化系统。它是指利用计算机技能和办公设备来完成办公室日常工作任务的一种综合性管理系统。OA系统涵盖了各种办公自动化软件,比如文字处理、电子表格、信息管理、流程处理等,旨在提高办公效率减少人力成本,并且促进信息流和工作流的协调高效运转

例如 飞书就属于非常先进的OA系统 除此之外 飞书向用户提供人力资源管理(HRM)客户关系管理(CRM)的功能,是通过其整合的应用程序生态系统来实现的。飞书内置了一些基本的HR管理功能,例如审批流程、请假管理、考勤打卡等,同时也可以通过与钉钉、企业微信等其他HR系统的接口来实现更复杂的HR管理功能。在客户关系管理方面,飞书也提供了联系人管理、沟通记录、任务分配等基本的CRM功能,并且还可以通过集成第三方的CRM系统,例如销售易、客户成功等,来满足企业更为复杂的CRM需求。

HR(人力资源管理)

HR系统的全称是Human Resources Management System,简称HRMS。HR系统是一种集成的软件或云端解决方案,用于管理和跟踪组织中的人力资源活动和流程。它涵盖了招聘、员工档案管理、薪酬福利、绩效管理、培训发展、劳动关系等方面。

CRM(客户关系管理)

CRM系统是客户关系管理系统的缩写,全称是Customer Relationship Management System。它是一种集成的系统,旨在帮助企业有效管理和维护与客户之间的互动和关系。该系统通过整合销售、市场营销、客户服务和技术支持等业务功能,能够帮助企业实现客户信息的集中管理、客户互动的跟踪和分析、以及对客户需求的理解和满足。

🔮互联网项目

QQ、微信、抖音、京东、美团等都是现在耳熟能详的互联网项目 传统的OA(办公自动化)、HR(人力资源管理)和CRM(客户关系管理)项目与互联网项目在多个方面存在区别:

(1) 目标和定位

传统的OA、HR和CRM项目通常更加注重企业内部管理和运营流程的优化,例如提高工作效率、降低成本、增强企业内部协作和沟通等。而互联网项目更倾向于与外部用户(包括客户、合作伙伴、供应商等)进行交互,以提供产品或服务、实现销售、建立品牌形象等。

(2) 使用者

传统的OA、HR和CRM项目主要服务于企业内部员工和管理人员,如办公桌前的职员、人力资源部门、销售团队等;而互联网项目则更多地关联到外部用户,包括消费者、市场伙伴、第三方开发者等。

(3) 系统架构和技术

传统的OA、HR和CRM项目通常基于企业内部的服务器架构,采用较为传统的技术平台和数据库系统,安全性和稳定性较高,但部署和维护成本也相对较高。互联网项目则更多地采用云计算、大数据、物联网等现代技术,侧重于可扩展性和灵活性,并可能使用分布式架构以支持大规模用户量和高并发访问

(4) 项目周期和开发模式

传统的OA、HR和CRM项目通常采用较为传统的瀑布模型开发,项目周期相对较长,需求变更较少。而互联网项目更倾向于采用敏捷开发、迭代开发或持续集成/持续交付(CI/CD)模式,以更快地响应市场需求和用户反馈

(5) 用户体验设计

传统的OA、HR和CRM项目可能更多地着重于功能性设计,专注于满足企业内部管理的需求;而互联网项目则更注重用户体验、界面设计和移动端兼容性,以提供更加友好和直观的用户操作界面。

🍭衡量一个网站的速度是否快

打开一个新的页面在一瞬间(0.36秒)完成

页面内的跳转在一刹那间(0.018)完成 页面内跳转的含义举例 -> 点击回到页面顶端的按钮

🍭互联网项目的特点

(1)用户多 -> 高性能

(2)流量大、开发高 -> 高可用

(3)海量数据

(4)易受攻击 -> 保证安全性

(5)功能繁琐 -> 敏捷性

(6)变更块 -> 敏捷性

🍭互联网项目的设计目标

(1)高性能:提供快速的访问体验

(2)高可用:网站的服务一直可以正常访问

(3)可伸缩:通过硬件增加/减少 -> 提供/降低处理能力

(4)高可拓展性:系统间的耦合度低 方便的通过新增/移除的方式 增加/减少新的功能/模块

(5)安全性:提供网站安全访问和数据加密,安全存储等策略

(6)敏捷性:随需求变化,快速响应

🎄分布式系统的相关概念

🍭集群和分布式

🔮集群

很多 “人“ 一起 干同样的事情 就某一个服务点进行强化 如:Redis集群,就负责缓存

注意 集群中的某个 “个体” 也可以是一个分布式系统 分布式系统中又有集群(嵌套)也就是说 一般情况下 集群和分布式是并存

🔮分布式

很多 “人“ 一起 干不一样的事情 各司其职 如:MySQL、Redis、前端服务器、后端服务器合力共同支持一个大项目的正常运转 而每一个部分又都能搭建起一个集群来强化某个部分的综合服务能力

🎄互联网项目架构演进

Dubbo是SOA时代的产物 SpringCloud是微服务发展的产物

🍭单体架构

优点:简单

缺点:可靠性低、性能低、可拓展性低

🍭垂直架构

相当于把一个单体架构拆分为多个更小的单体架构

改进的优点:提高可维护性、项目启动变快(并行)、提高性能(是否提高起决于机器配置)

新的缺点:容易出现重复的模块(app1和app2都需要的模块)

🍭分布式架构

优点:解决了垂直架构各个app存在重复模块的问题

可以进一步改进的地方:支持变更管理

🍭SOA架构

优点:解决了分布式架构不支持变更管理的缺点

可以进一步改进的地方:向微服务思想演进

🍭微服务架构