
در این مقاله که سری دوم از مسیری در جهت تبدیل شدن به یک توسعه دهنده گولنگ را نشان می دهد. که یک توسعه دهنده گولنگ باید چه چیز های یاد بگیرد. پس با ما همراه باشید. شما می توایند قسمت اول را از این جا بخوانید.
سرفصل بخش اول شامل موارد زیر هست
خوشحال میشم اگه چیزی از قلم افتاده توی همین پست برام کامنت کنید.
و در ضمن ما رو توی گیت هاب دنبال کنید
اولش یه توضیح بدیم که این کش ها کارشون چیه با یه مثال
خودِ کلمهی Cache به معنای پنهان کردن یا چیزی است که برای کاربردهای آتی ذخیره و پنهان شده است. مثلاً به غذایی که حیوانات در زمستان ذخیره و پنهان میکنند تا بعداً استفاده کنند، Cache گفته میشود. اصطلاح کش در دنیای کامپیوتر، همزمان با تلاش برای افزایش کارایی CPU (پردازندههای مرکزی کامپیوترها) به صورت گسترده رواج پیدا کرد.
در واقع کش یک لایه ذخیره سازی داده با سرعت بالا است که مجموعه ای از داده ها را ذخیره می کند، با این هدف که پاسخ گویی به درخواست ها با سرعت بیشتری انجام شود. به طور کلی داده ها در کش، در سخت افزار با دسترسی سریع مانند RAM (حافظه با دسترسی تصادفی) ذخیره می شود تا امکان استفاده از داده های کش شده با سرعت بالا فراهم باشد. هدف اولیه Cache افزایش بازده داده ها با کاهش نیاز به دسترسی به لایه ذخیره سازی با سرعت پایین تر(مانند Hard Disk )است. در واقع Cache ها در لایه های مختلفی مانند سیستم عامل ها، لایه های شبکه از جمله NetNews ، تحویل محتوا (CDN) و DNS، برنامه های کاربردی وب و پایگاه های داده استفاده می شود.
۱-۱. کتابخانه gcache
یک کتابخانه کش برای گولنگ. این کتابخانه از کش ، LFU ، LRU و ARC استفاده می کند.
ویژگی های این کتابخانه
۱-۲. کتابخانه go-redis
نوع امن Redis برای Golang می باشد این کتابخانه
ویژگی های این کتابخانه
۱-۳. کتابخانه gomemcache
نوع memcache برای Golang می باشد این کتابخانه
یه تغریفی هم از Memcached داشته باشیم
به زبان ساده تر Memcached یک نرم افزار برای انجام عملیات کش روی سرورهای وب سایت های Dynamic هست که باعث میشه از منابعتون بهتر و بهینه تر استفاده کنید . نرم افزار Memcached بصورت Open Source ارائه شده و مکانیزم کش کردن Object ها و به ویژه Query ها رو در Dynamic وب سایت ها بر عهده داره تا سرعتشون رو بالا ببره . با استفاده از Memcached تعداد دفعات دسترسی به پایگاه داده شما کم میشه و سرعت پاسخگویی وب سایت شما بالا می ره . در Memcached مکانیزم هایی برای منقضی شدن Object های کش شده و البته پاسخ های بازگشتی به کاربر دیده شده که اگر محتوایی تغییر می کنه یا نتیجه ای باید تغییر کنه بلافاصله اینکار انجام بشه و نتایج اشتباه به کاربر نمایش داده نشه .
۲-۱. کتابخانه های نوع Log Frameworks
کتابخانه Zap
یک سیستم سریع و ساختار ی رو ارایه می کند.در واقع Zap یک رویکرد متفاوت را اتخاذ می کند. این کتابخانه شامل یک رمزگذار JSON است و بر پایه Logger تلاش می کند تا از هر جایی که امکان پذیر باشد از سرریز سریال و تخصیص آن جلوگیری کند.
کتابخانه ZeroLog
بسته zerolog یک چارچوب سریع و ساده را به خروجی JSON اختصاص می دهد.
در واقع API Zerolog به گونه ای طراحی شده است که هم یک تجربه توسعه دهنده عالی داشته باشد و هم عملکرد خیره کننده ای داشته باشد. و همچنین برای ساده نگه داشتن پایه کد فقط روی ورود به سیستم ساختاری کارآمد تمرکز دارد.
کمپانی ها و پروژه های که از این کتابخانه استفاده می کنند.
ویژگی های این کتابخانه
context.Context integrationnet/http helpers۲-۲. ابزارهای Log Management System
ابزار Sentry.io
این ابزار مانیتورینگ خطا انجام می دهد یعنی خطاها را الویت بندی می کند
ابزار Loggly.com
تجزیه و تحلیل ورود به سیستم و نظارت بر ورود به سیستم و مسائل مربوط به عملکرد را با ردیابی و به یکدیگر سریعتر حل کنید
۲-۳. ابزار های نوعDistributed Tracing
ابزار Jaeger
نظارت و عیب یابی در سیستم های پیچیده توزیع شده
۳-۱. ابزار Socket.IO
در واقع Socket.IO در واقع یکی از کتابخانه های جاوا اسکریپت است که یک ارتباط دو طرفه (رفت و برگشتی) بین کلاینت و سرور برقرار می کند و از دو قسمت تشکیل می شود! کتابخانه سمت کلاینت که در مرورگر اجرا شده و دیگری ، کتابخانه سمت سرور بر پایه Node.js است که دارای یک API برای ارتباط با یکدیگر هستند.
مفوهمREST
رست (به انگلیسی REST) مخفف REpresentational State Transfer یکی از محبوبترین استانداردهای معماری API هست که روی فیلدینگ (Roy Fielding) در پایان نامه دکترای خودش معرفی کرد. این استاندارد تشویق میکنه لایه بکاند کاملا از فرانتاند جدا کنیم، این استاندارد یک سری قوانین وضع کرده
برای اطلاعات بیشتر این مقاله رو بخونید رست VS گرافکیوال
۴-۱. کتابخانه Gentleman
این کتابخانه از اصول توسعه پذیری و ترکیب استفاده می کند تا روشی انعطاف پذیر برای ایجاد آسان لایه های HTTP بر اساس پلاگین های داخلی فراهم کند که می توانید در کلاینت های HTTP ثبت نام کرده و از آن استفاده مجدد کنید.
ویژگی های این کتابخانه:
net/http package.مفهوم GraphQL
گرافکیوال یک query language برای API هست. تو سال ۲۰۱۲ توسط فیسبوک ایجاد شد و درسال ۲۰۱۵ به صورت اپن سورس منتشر شد. این نه یک استاندارده نه یک وب سرویس. گرافکیوال واسط بین کوئری و دیتاسورسهای شماست. دیتاسورس شما میتونه دیتابیس یا وب سرویس باشه.
برای اطلاعات بیشتر این مقاله رو بخونید رست VS گرافکیوال
۴-۴. کتابخانه gqlgen
یکی از بهترین کتابخوانه های گولنگ می باشد برای کار با گراف کیوال ها<br/>۴-۵. کتابخانه graphql-go
یکی دیگر از کتابخوانه های گولنگ می باشد برای کار با گراف کیوال ها
ویژگی های این کتابخانه:
context.ContextOpenTracing standardیکسری مثال با نحوه کار این ابزار روی گراف کیوال ها
tonyghita/graphql-go-example - A more "productionized" version of the Star Wars API example given in this repository.
deltaskelta/graphql-go-pets-example - graphql-go resolving against a sqlite database.
OscarYuen/go-graphql-starter - A starter application integrated with dataloader, psql and basic authentication.
zaydek/graphql-go-walkthrough - A beginner friendly walkthrough for prospective developers.
۵-۱. کتابخانه Validator
کتابخانه ای برای اعتبار سنجی مقادیر فیلد ها و استراکچرها
ویژگی های این کتابخانه:
۵-۲. کتابخانه GJson
این یک راه سریع و ساده برای به دست آوردن مقادیر از یک سند json را فراهم می کند. دارای ویژگی هایی مانند بازیابی یک خط ، مسیرهای نشانه گذاری نقطه ، تکرار و تجزیه خطوط json است.
۵-۳. کتابخانه Authboss
این بسته یک سیستم تأیید اعتبار ماژولار برای وب است.
این بسته چندین ماژول دارد که ویژگی های تأیید اعتبار و مجوز را دارد که به طور کلی برای وب سایت ها معمول است به گونه ای که شما می توانید هر تعداد مورد نیاز خود را فعال کنید و سایرین را کنار بگذارید. این کار باعث می شود تا بتوانید احراز هویت را به یک برنامه وصل کنید.
۵-۴. کتابخانه Go-Underscore
کتابخانه Underscore.js یکی از کتابخانه های کاربردی JavaScript می باشد که بدون نیاز به توسعه Object های جاوااسکریپت و با استفاده از توابع موجود در آن می توان کدنویسی را بسیار ساده و با سرعت و Performance بهتری انجام داد. در واقع در گولنگ هم ما چنین کتابخانه Go-Underscore داریم.