心中所想-程序技术发展

本文从后端开发的角度探讨了程序与数据的关系,解释了数据如何在软件中体现,以及数据的来源、传输、存储和个性化。随着技术发展,从单体机到微服务,架构不断演进,强调了数据的重要性。文中提到了分布式架构、服务化和微服务等概念,并列举了相关技术,如AJAX、RPC、MQ、Nginx等。同时,讨论了前端技术、数据库管理和项目框架等,指出技术栈的不断进步推动了软件开发的效率和质量。
摘要由CSDN通过智能技术生成

该篇将以 后端程序开发 的角度 去诠释对于程序发展技术的一个见解。
欢迎补充与纠正!

何为程序

我认为的软件程序,是 一种 可视化信息载体的 体现,不管是什么 软件,网站,小程序,APP,都是 在将数据通过不同的渠道运用不同的规则展现出来。
拿微信来说,在没有这款软件,人们之间还是可以通过口头或者电话的交流传达信息,但是不够可视化,说过的话转头可能就忘了,而微信就可以在一定程度上将信息留存,在聊天记录查看通过可视化呈现出来。

何为数据

编程世界里 万物都可以当作数据的载体,一个人,一个物体,一个动作。
在编程世界中,数据就是核心,现实生活中,数据也是核心,换句话说,编程思想在一定程度上推动着社会发展,也是为什么科技是第一生产力,为什么这样说?举个例子,京东618,天猫双11,各种购物狂欢交易的背后 其实都是 资本家对于 数据的掌控力的体现,你浏览的东西或者说是你喜欢的东西在大数据下无所遁形,你的喜好在当前 数据信息化时代 变得值钱,于是你就被拿捏,你喜欢的东西打折心动不,你说没有钱买是吧,花呗白条信用卡,12期免息,你买不买,正因为没钱所以才要买,因为日常的价格你更负担不起,一年就这么几次,于是乎就贡献了交易额。

往回倒退几十年,网上购物方式是想都不敢想的,但是也并没有说家里的东西缺的什么都不买的,只是方式上在线下购物,那么你的信息说白了没什么用,在那个时代没人在乎你可能喜欢什么东西,只有买卖罢了。喜欢了就去买,买完了就结束了。

经历经济飞速发展的这个阶段,我见证了,也因此深刻理解 数据时代来临,大数据的重要性。谁是 数据 之王 谁就是 真正的 王。

何为程序数据

心中所想------程序中的这些数据是怎么把控的

  1. 数据从哪来的啊
  2. 数据怎么传送的
  3. 数据怎么存储的
  4. 数据怎么个性化

数据从何而来?
1.大部分认知层面的数据 通过客户本身搜集 也就是 前端面向用户端,采用 H5页面或者是 APP页面让用户进行数据填充的行为采集
2.小部分一些配置规则,为服务客户而定的数据
3.通过物联网的设备采集

数据怎么传送的?
1.通过AJAX 脚本页面上的一种 交互技术,传到 服务器端
2.服务器端通过 业务逻辑规则 将数据过滤成心中所想然后传送给数据库

数据怎么存储的?
1.数据库技术/缓存技术,将数据存放在 服务器电脑的 内存/磁盘
2.与硬盘内存进行 I/O 读取和写入

何为程序架构

要想达到一个 数据 流程的闭环,简单分析出这 4个要素 ,就说明了并不是一个简单的事情,各个环节 都需要相应的技术手段 相辅相成,才能达到一个程序软件。

那么做任何事情之前,都需要有个指导方向,即使知道了自己要做什么,怎么做。建造行业有个职业就 架构师,就会把控全局的建筑流程,因此 程序界也 衍生出 架构这个 理念,并有了架构师的 职业。因此架构师也在一定程度上代表了 超高的水准 把控全局。

有效指导和最大程度的保障软件开发的质量、周期和成本。

架构发展过程

通过架构发展,来整理出 各个部分相关技术的进化,来了解程序技术的发展.
从森林树林到树木花草看枝繁叶茂

  1. 单体机时代
    早期电脑普遍昂贵,数据量很小,从开发成本到实现软件,最合适的就是一台电脑全部搞定,应用程序业务逻辑代码,数据库,文件都在一个服务器上,共用一套 硬件设备,数据通信也不用担心,都是一家人,调用很方便。
    举例:小乐开了一家小饭店,初期来的人很少,于是小乐又当服务员又当厨师又当收银员,但是也完全不影响营业。

  2. 单体集群时代
    人开始多了,饭店开了一个分店,由小乐的弟弟小福打理,不过也是小福又当服务员又当厨师又当收银员。
    本质上处理方式还是 单体 一人一台服务器包揽,只是数量扩充。

    问题来了,如何引导客人在俩个店达到一个均衡,不能10个人都去一个店等,另一个店空空如也,于是 负载均衡技术 Nginx为例 诞生。

    好处就是,当一个店关门,不会影响客户吃饭的情景,也就是 容错高了,一台服务器宕机,不会直接崩盘。

  3. 分布式------垂直架构
    慢慢的发现,客人店中大多数情况都是在等饭,结账很快,那么小乐就发现,自己厨师身份和服务员的身份 在功效上是无法对比,就是二八定律 八成的时间集中在厨房 当厨师的活一直很忙,当收银员就很轻松

    于是就想如何让 厨师做饭的效率高起来呢?
    鉴于小乐厨艺效率不高,就请来一个厨师,自己只收银即可。

    这就是垂直架构,合理高效的分配,不局限于一台服务器一个人去做事,也衍生了模块化概念,在某一个模块利用高效的资源去处理,因为厨师模块工作忙,于是专门请个师傅也就是打造一个 厨师服务器专业对口,效率高。

    所以总结一下就是,模块化的管理,对不同模块针对性的打造相对应高效率的服务器。在硬件上体现的话就是 厨师服务器 使用更牛的 cpu 或内存更大

    补充:二八定律:80%的业务访问集中在20%的数据上

    问题:原来一台服务器一个人,现在俩台服务器俩个人,怎么通信交流?
    于是技术上诞生了多个模块之间的交互:WebService、RPC等方式进行访问

  4. 分布式------面向服务SOA
    后来,饭店不限于家常菜,推出了烧烤(扩充业务),小乐又请了烧烤师傅。那么问题来了,点了烧烤和炒菜 ,结账是分开结算还是一起结算?
    按照生活常识来说的话应该是一家店一起结算,编程上也应该是一起算,但很明显是俩个模块,炒菜模块,烧烤模块,不同的业务,都使用了收银模块,这就 体现了一个 很重要的概念 解耦重用复用,这就意味着 收银模块 不在单独属于别的任何一个模块,它应该是独立的 供其他模块调用。
    于是乎,服务来了,它为模块增添了羽翼,让它变为独立者,为其丰富了调用
    那么问题来了?服务怎么通信? RPC和MQ
    在原有基础WebService、RPC等方式上配合

    1. 集中管理服务ESB服务总线 通过MQ通讯 各个服务
    2. 分布式管理服务技术 Dubbo
      随着时代进步,更多人能够买得起电脑,成为电脑用户,上网的潮流必然使得流量在增多,原始的软件不足以支撑大流量的冲击,怎么办,改进,就像一个饭店,容纳10个人,平常也就7,8个,现在有100个人要来吃饭,怎么办?要么店面扩张,容纳多点人,要么就是开个分店,引走客流到分店去
      怎么改进?
  5. 分布式------微服务
    升华,体现在 微化 更彻底的细化,颗粒度把每一个服务当成了一个 独立的组件,比如说结账服务 (支付积分退款),但是变成微服务可能会细化成 支付服务 退款服务 积分服务,所以说要看 实际情况 是否必要去 拆的细化,以及 是否通过ESB 总线 管理服务更有效,毕竟 微服务之后 都是 各自为战 各自部署 只是在通信建立联系,管理不太方便。

  6. 分布式------集群
    集群其实就是一个数量化的复制,里面的内容都是一比一一样的。更多承载,也不怕一台服务器宕机的情况。

涉及技术发展
  1. 通信 网络通信 ajax webservice rpc 到现在的 webapi grpc MQ Nginx
  2. 前端 js jquery vue
  3. 业务逻辑 MVC 前后端分离
  4. 存储 数据库 redis缓存
  5. 技术管理工具技术 Kafka Zookeeper docker K8s
  6. 指导思想 DDD 领域驱动
  7. 项目框架搭建思想 ABP
小结

每一个方面所涉及的技术 都是很大的一个 技术栈,里面需要很多细节和知识点需要去学习。
这里只是大概了解了一下 技术的几个方向,以及大概技术衍生的来源,明白了一个大纲,在沿着某个所感兴趣的方向去钻研,变得精通。
不能什么都不懂,也不可能什么都精通,知道潮流并不一定要去引导潮流,有些不是专攻点做到了解就可以,自己的方向如果越精通越好。

所以 也就是为什么 现在 devops 开发运维 以及 CICD 持续集成 ,就是为了融合贯通技术潮流,需要各自领域的大神支撑技术,也需要融汇技术对应的管理。

于是乎 大型敏捷 也开始流行,敏捷教练职位也开始吃香。
在趋于成熟的技术栈中,公司项目的开发周期运转是敏捷的关心之处,持续高效快捷交付是目标。

完结!欢迎补充与纠正!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值